1

我有一个查询NOT IN。我听说 MySQL 不支持NOT IN,但我不知道如何重写它。

我的查询是:

SELECT * FROM quests
  WHERE id NOT IN ('" .$quest_completed. "') 
  AND location=" .$location_id. "
  AND (follows=0 OR follows IN ('" .$quest_completed. "')) 
  ORDER BY title

例如:

SELECT * FROM quests 
WHERE id NOT IN (6,21) AND 
  location=8 AND 
  (follows=0 OR follows IN (6,21))
ORDER BY title

当我指定时,正在返回第 6 行WHERE id NOT IN 6

4

3 回答 3

1

看起来,由于您在$quest_completed变量周围使用撇号,实际执行的查询可能是NOT IN ('6,21'),而不是NOT IN (6,21)(我认为这是您想要的?)。

不同之处在于第一个版本返回id不等于字符串'6,21'的记录,而第二个版本返回id既不是数字6也不是数字的记录21

于 2012-04-27T01:04:20.787 回答
0

NOT IN 也可以解释为逻辑非(某些条件),例如

NOT ID in ( 'A', 'B', 'C', 'D' )

所以,如果您遇到书面问题,请尝试交换...

于 2012-04-27T01:06:20.873 回答
0

MySQL支持NOT IN就好了。限制仅适用于某些情况,例如这里的情况:MySQL "NOT IN" query

于 2012-04-27T00:58:40.133 回答