首页 > 数据库 > mysql教程 > 如何正确格式化 MySQL 变量以便在'NOT IN”子句中使用?

如何正确格式化 MySQL 变量以便在'NOT IN”子句中使用?

Mary-Kate Olsen
发布: 2024-12-31 20:32:10
原创
900 人浏览过

How to Correctly Format MySQL Variables for Use in a

“NOT IN”值列表的 MySQL 变量格式

当尝试使用“NOT IN”列表排除 MySQL 查询中的某些值时,分配一个将变量设置为排除值可能是一个方便的解决方案。但是,确保正确的变量格式至关重要。

如查询中所述,您尝试为变量“@idcamposexcluidos”分配不同的格式:

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

但是,这些格式都无法按预期工作。原因是“IN”子句需要单独的值,而不是单个字符串。因此,查询:

WHERE id_campo not in (@idcamposexcluidos)
登录后复制

实际上变成:

WHERE id_campo not in ('817,803,495')
登录后复制

,这是不正确的。这些值应作为单独的字符串文字提供:

WHERE id_campo not in ('817','803','495')
登录后复制

要解决此问题,有两个选项:

  1. 动态 SQL: 创建查询动态地使用排除值的串联。
  2. MySQL FIND_IN_SET()功能: 使用 FIND_IN_SET() 函数检查该值是否存在于以逗号分隔的排除值列表中,如下所示:
SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
登录后复制

注意使用 FIND_IN_SET()函数可能会影响索引的使用。

以上是如何正确格式化 MySQL 变量以便在'NOT IN”子句中使用?的详细内容。更多信息请关注PHP中文网其他相关文章!

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