我正在经历咖啡因剥夺攻击......
如果我有一串数字
$myStr = '100, 102, 204';
如何从mySQL db中选择没有id值与字符串中的一个匹配的结果?
SELECT * FROM t1
WHERE t1.id NOT IN ($myStr)
这看起来不对......
答案 0 :(得分:6)
您的代码完全正确。
如果您只选择一个表格,id
代替t1.id
即可。
答案 1 :(得分:1)
我的猜测是你引用了完整的条款:
SELECT * FROM t1
WHERE t1.id NOT IN ('100, 102, 204')
你需要这个:
SELECT * FROM t1
WHERE t1.id NOT IN (100, 102, 204)
答案 2 :(得分:1)
SQL IN
子句不允许单个变量表示值列表。该查询按原样只能作为动态SQL运行 - 在任何数据库上。
一种特定于MySQL但不受限制的替代方法是使用FIND_IN_SET function:
SELECT t.*
FROM T1 t
WHERE FIND_IN_SET(t.id, $myStr) = 0
FIND_IN_SET文件:
...如果str不在strlist中,或者strlist是空字符串,则返回0。如果任一参数为NULL,则返回NULL。如果第一个参数包含逗号(“,”)字符,则此函数无法正常工作。