Mysql多个OR语句

时间:2011-07-14 22:28:15

标签: php mysql

所以我有一个名为id的列表,在极少数情况下,列出的很多ID(20到140个不同的ID)不需要/不能显示给用户。这都是基于不同的权限。

SELECT * FROM `table` WHERE (`id` != 21474 OR 26243 OR 78634) AND `checked` = 5

不幸的是,DB中的其他任何地方都没有额外的分组,允许我一次调出这部分ID。所以我在寻找是否有更好的方法来解决这个问题,或者我是否应该忽略在mysql / SELECT语句中执行此操作,而是在拉出所有内容之后在PHP语句中执行此操作。以后使用PHP foreach的问题是被拉出的数据可能是数百行,因此它会真正减慢页面速度。正如你在上面的mysql查询中看到的那样,我想在一个巨大的声明中列出ID,但我想也许有更好的方法来解决这个问题。 100 ORs听起来不是最好的解决方案。

2 个答案:

答案 0 :(得分:10)

使用IN关键字

SELECT * FROM `table` WHERE `id` NOT IN (21474, 26243, 78634) AND `checked` = 5

答案 1 :(得分:1)

IN语句很好,但是如果查询结果太长,请注意不要碰到服务器的max_allowed_packet选项。