首页 >数据库 >mysql教程 >如何在 MySQL 中正确使用'NOT IN”与值列表?

如何在 MySQL 中正确使用'NOT IN”与值列表?

Barbara Streisand
Barbara Streisand原创
2025-01-03 12:23:39746浏览

How to Correctly Use

MySQL 中“NOT IN”值列表的正确格式

尝试使用逗号分隔的值列表填充表变量并将其用作“NOT IN”过滤器会出现常见的障碍。了解此操作的正确语法和限制至关重要。

问题

如原始查询所示,将变量设置为逗号分隔的值列表:

SET @idcamposexcluidos='817,803,495';

随后尝试在“WHERE NOT IN”条件下使用它:

WHERE id_campo not in (@idcamposexcluidos)

通常会导致错误或意外的结果。

解决方案

问题的关键在于 IN 子句对不同值的期望。然而,使用逗号分隔的字符串作为参数会在 IN 子句中有效地编译为单个字符串,从而导致不正确的比较。

要克服这个问题,必须使用动态 SQL 或使用 MySQL 的 FIND_IN_SET() 函数:

SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0

虽然 FIND_IN_SET() 提供了一种解决方法,但它也有其局限性。与使用索引不同,它需要对值列表进行线性搜索,从而导致性能下降。

以上是如何在 MySQL 中正确使用'NOT IN”与值列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn