MYSQL IN 或多个条件

Posted

技术标签:

【中文标题】MYSQL IN 或多个条件【英文标题】:MYSQL IN or multiple conditionals 【发布时间】:2009-10-13 10:53:32 【问题描述】:

我有一个简单的查询,它返回基于字段status 没有特定值的记录。 假设为了参数,该字段可以具有值 1、2、3...10,并且我想返回所有不具有值 3、7 和 9 的记录。以下哪个最好使用?

选项 1。

SELECT `id` FROM `tbl` WHERE (`status` != '3' AND `status` != '7' AND `_status` != '9')

选项 2。

SELECT `id` FROM `tbl` WHERE `status` NOT IN ('3','7','9');

感谢您的帮助。

【问题讨论】:

【参考方案1】:

我怀疑优化器会将两个查询减少到同一件事,如果这是真的,我更喜欢第二个选项,因为它更短,因此更容易解析。

您应该尝试在每个查询上运行EXPLAIN,并使用真实数据进行确认。

【讨论】:

【参考方案2】:

使用 EXPLAIN 命令优化查询的最佳方法 举例

解释 SELECT id FROM tbl WHERE status NOT IN ('3','7','9'); 并查看执行时间

【讨论】:

以上是关于MYSQL IN 或多个条件的主要内容,如果未能解决你的问题,请参考以下文章

mysql_where条件

mysqlwhere条件判断字符位数

php+mysql多条件多值查询

mysql中on,in,as,where如何用,意思是啥?

SQL多个条件模糊查询问题。。。

mysql where in(几千个ID)如何优化