大佬教程收集整理的这篇文章主要介绍了PHP-如何编写此查询?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_244_4@map_id - module_id - category_id 1 - 3 - 6 2 - 3 - 9 3 - 3 - 11 4 - 4 - 6 5 - 4 - 9 6 - 4 - 12@H_145_0@map_id是主键.我在数组中有一个category_iD列表.
我选择的标准是:
>如果category_id数组包含6,9,则应同时返回两个module_id = 3、4.
>如果category_id数组包含6,9,11,则仅返回module_id = 3
现在,如果我运行一个简单的WHERE … IN查询,则会选择所有行,这不是我想要的.
编辑:其实我正在寻找一个更动态的解决方案.可能我的问题不清楚(这是我的第一个问题).
说我有这些category_id:
$猫=数组(6,9)
如果我查询
“从可映射的WHERE category_id IN(” .implode(‘,’,$cat).“中选择SELECT module_id.”)“
然后我得到的行具有module_id 3和4.
另一方面,如果数组是
$猫=数组(6,9,11)
并且我运行相同的查询,我再次得到相同的结果.但这次我只希望module_id = 3的行.
解决方法:
SELECT module_id FROM
(SELECT module_id FROM table WHERE category_id = 6) cat_6
JOIN (SELECT module_id FROM table WHERE category_id = 9) cat_9 USING (module_id)
JOIN (SELECT module_id FROM table WHERE category_id = 11) cat_11 USING (module_id)
确保在category_id,module_id上有一个索引,并在module_id,category_id上有第二个索引.理想情况下,您可以创建那些唯一索引.
以上是大佬教程为你收集整理的PHP-如何编写此查询?全部内容,希望文章能够帮你解决PHP-如何编写此查询?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。