首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中的空IN子句参数列表

问MySQL中的空IN子句参数列表
EN

Stack Overflow用户
提问于 2012-11-03 22:51:05
回答 10查看 62.6K关注 0票数 93

在执行IN子句为空的SQL查询时,会发生什么情况?

例如:

代码语言:javascript
复制
SELECT user WHERE id IN ();

MySQL是否会按预期处理(即始终为false),如果不是,在动态构建IN子句时,应用程序如何处理这种情况?

EN

回答 10

Stack Overflow用户

发布于 2012-11-03 23:30:46

如果我有一个动态构建IN列表的应用程序,它可能最终是空的,我有时会用一个不可能的值初始化列表,然后添加到该列表中。例如,如果它是一个用户名列表,我将从一个空字符串开始,因为这不是一个可能的用户名。如果它是一个auto_increment ID,我将使用-1,因为实际值总是正数。

如果这不可行,因为没有不可能的值,则必须使用条件来决定是否在WHERE子句中包含AND column IN ($values)表达式。

票数 61
EN

Stack Overflow用户

发布于 2016-05-25 01:11:17

这也给了我0个结果:

代码语言:javascript
复制
SELECT id FROM User
WHERE id IN (NULL);

已在MYSQL 5.6上试用

票数 16
EN

Stack Overflow用户

发布于 2012-11-03 22:58:47

使用有效语法的此查询的最接近值为:

代码语言:javascript
复制
SELECT user FROM tbl1 WHERE id IN (SELECT id FROM tbl1 WHERE FALSE);

它无条件地返回一个空的结果集。括号中的子查询始终返回空集,并且在空集中找不到任何值,因为空集不包含任何值。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13210233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档