PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP-如何编写此查询?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有以下mysql表:

@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的行.

解决方法:

sql并不是真正为这样的查询设计的,但是可以做到的.

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,请注明来意。
标签: