排除字符串中的结果

时间:2011-06-27 19:41:22

标签: php mysql

我正在经历咖啡因剥夺攻击......

如果我有一串数字

$myStr = '100, 102, 204';

如何从mySQL db中选择没有id值与字符串中的一个匹配的结果?

SELECT * FROM t1 
WHERE t1.id NOT IN ($myStr)

这看起来不对......

3 个答案:

答案 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。如果第一个参数包含逗号(“,”)字符,则此函数无法正常工作。