首页 > 数据库 > mysql教程 > 如何在'NOT IN”子句中使用带有逗号分隔列表的 MySQL 变量?

如何在'NOT IN”子句中使用带有逗号分隔列表的 MySQL 变量?

DDD
发布: 2025-01-04 06:11:43
原创
667 人浏览过

How Can I Use a MySQL Variable with a Comma-Separated List in a

为“NOT IN”查询中的排除值列表建立 MySQL 变量

在 MySQL 中,构建基于预定义列表排除特定值的查询可以很棘手。此问题深入探讨分配变量以包含排除值的逗号分隔列表并在“NOT IN”子句中使用它的问题。

不正确的变量格式

正如问题中提到的,以各种格式分配变量并不成功,要么导致错误,要么忽略值。以下是尝试的格式:

  • SET @idcamposexcluidos='(817,803,495)';
  • SET @idcamposexcluidos=817,803,495;

The问题

挑战在于如何在查询中编译“IN”子句。使用该变量时,它会编译为单个字符串:WHERE id_campo not in ('817,803,495')。但是,“NOT IN”子句的正确格式需要单独的值: WHERE id_campo not in ('817','803','495').

解决方案:使用 FIND_IN_SET()

为了解决这个问题,MySQL 提供了 FIND_IN_SET() 函数,它允许排除基于变量中定义的列表。修改后的查询如下所示:

SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
登录后复制

此解决方案成功排除 id_campo 值与 @idcamposexcluidos 变量中的任何值匹配的行。

注意: FIND_IN_SET() 解决了这个问题,它阻止在 id_campo 列上使用索引。

以上是如何在'NOT IN”子句中使用带有逗号分隔列表的 MySQL 变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板