我有一个问题要问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当我指定WHERE id NOT IN 6时,返回id为6的行
发布于 2012-04-27 09:04:21
由于您在$quest_completed变量周围使用了撇号,因此实际执行的查询很可能是NOT IN ('6,21'),而不是NOT IN (6,21) (我认为这就是您想要的?)。
区别在于,第一个版本返回id不等于字符串'6,21'的记录,而第二个版本返回id既不是数字6也不是数字21的记录。
发布于 2012-04-27 08:58:40
MySQL supports NOT IN just fine.限制只适用于某些情况,比如这里的:MySQL "NOT IN" query
发布于 2012-04-27 09:06:21
NOT IN也可以解释为逻辑NOT (某些条件),例如
NOT ID in ( 'A', 'B', 'C', 'D' )所以,如果你有写出来的问题,就试着交换...
https://stackoverflow.com/questions/10343388
复制相似问题