在执行IN子句为空的SQL查询时,会发生什么情况?
例如:
SELECT user WHERE id IN ();MySQL是否会按预期处理(即始终为false),如果不是,在动态构建IN子句时,应用程序如何处理这种情况?
发布于 2012-11-03 23:30:46
如果我有一个动态构建IN列表的应用程序,它可能最终是空的,我有时会用一个不可能的值初始化列表,然后添加到该列表中。例如,如果它是一个用户名列表,我将从一个空字符串开始,因为这不是一个可能的用户名。如果它是一个auto_increment ID,我将使用-1,因为实际值总是正数。
如果这不可行,因为没有不可能的值,则必须使用条件来决定是否在WHERE子句中包含AND column IN ($values)表达式。
发布于 2016-05-25 01:11:17
这也给了我0个结果:
SELECT id FROM User
WHERE id IN (NULL);已在MYSQL 5.6上试用
发布于 2012-11-03 22:58:47
使用有效语法的此查询的最接近值为:
SELECT user FROM tbl1 WHERE id IN (SELECT id FROM tbl1 WHERE FALSE);它无条件地返回一个空的结果集。括号中的子查询始终返回空集,并且在空集中找不到任何值,因为空集不包含任何值。
https://stackoverflow.com/questions/13210233
复制相似问题