问题描述
我想使用JOIN优化FIND_IN_SET查询。
今天我有一个“页面”表:
id | title | classification
1 | ABC | NULL
2 | DEF | Admin,Public,Author
3 | GHI | Admin
所有用户都具有“管理员”或“作者”之类的属性...
示例:
$myClassifications = array("Admin","SuperAdmin");
我选择了所有页面,其中“用户”的分类是“页面”的分类。还会选择“公共”页面和没有分类的页面:
SELECT * FROM pages WHERE FIND_IN_SET("Admin",classification) OR FIND_IN_SET("Super",classification) OR classification is NULL OR FIND_IN_SET("Public",classification)
现在,我想优化查询并使用JOIN。像这样...
页表:
id | title
1 | ABC
2 | DEF
3 | GHI
PageClassification表: id | pageId |分类 1 | 1 |管理员 2 | 1 |上市 3 | 1 |作者
如何更改SELECT来查找所有具有“公共”页面或用户分类数组中的键之一或没有分类记录的页面?
下一步:
$myClassifications = array("Admin" => "1","Age" => "21");
PageClassification表:
id | pageId | classification | value
1 | 1 | Admin | =1
2 | 1 | Public | =1
3 | 1 | Author | =1
4 | 1 | Age | >=21
如何更改SELECT来查找所有具有键“ Public”且值为1或用户分类数组中的键/值对之一或没有分类记录且用户年龄大于21岁的页面?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)