1
我想我誤解了SQL。當我嘗試了以下矛盾查詢:嵌套SQL(IN&EXISTS)與group by返回矛盾結果
SELECT id, key, value FROM Things WHERE value > 1 AND key = 'key' AND id IN (
SELECT id
FROM Things
WHERE key = 'key' AND value < 1
) GROUP BY id, key, value LIMIT 2;
我得到如下結果:
id | key | value
--------+------------+-----------
92 | 18 | 2
4 | 18 | 2
同樣的,當我嘗試此查詢:
SELECT id, key, value FROM Things a WHERE value > 1 AND key = 'key' AND EXISTS (
SELECT *
FROM Things b
WHERE a.id = b.id AND a.key = b.key AND b.value < 1
) GROUP BY id, key, value LIMIT 2;
我得到相同的結果:
id | key | value
--------+------------+-----------
92 | 18 | 2
4 | 18 | 2
最後當我試試這個,我得到正確的結果:
SELECT X.id, X.key, X.value FROM (
SELECT id, key, value
FROM Things
WHERE key = 'key' and value < 1
) AS X WHERE X.key = 'key' AND X.value > 1 GROUP BY id, key, value LIMIT 2;
id | key | value
--------+------------+-----------
我想也許指標進行跟我搗亂,但我確信,還有非和它仍然表現這樣。
有人可以解釋爲什麼會發生這種情況,以及我誤解了什麼?
太好了,謝謝!我認爲這就是我誤解的原因。 – Dan 2013-05-06 12:01:20