Mysql多个OR语句

Sar*_*ara 2 php mysql

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

SELECT * FROM `table` WHERE (`id` != 21474 OR 26243 OR 78634) AND `checked` = 5
Run Code Online (Sandbox Code Playgroud)

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

bgc*_*ode 10

使用IN关键字,

SELECT * FROM `table` WHERE `id` NOT IN (21474, 26243, 78634) AND `checked` = 5
Run Code Online (Sandbox Code Playgroud)

  • +1以获得更好的建议.要回答OP的问题,正确的语法是`WHERE(id!= 21474 AND id!= 26243 AND id!= 78634)` (2认同)