The
in
Query
SELECT * FROM commodity
WHERE id IN (SELECT cid FROM specifications s WHERE s.id<600);
The
EXISTS
Query
SELECT * FROM commodity
WHERE exists(SELECT c.*
FROM specifications s,commodity c
WHERE s.id < 600 and c.id = s.cid );
为什么我使用上述两个查询得到两个单独的结果。我做错了什么?
最佳答案
您不需要在 EXISTS
运算符的子查询中进行 JOIN
操作:
SELECT * FROM commodity c
WHERE exists(SELECT c.*
FROM specifications s
WHERE s.id < 600 and c.id = s.cid );
现在,只要 id
不是 NULL
字段,这两个查询是等效的。
关于mysql - `Exists` 和 `IN` 在 MySQL 中给出两个不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45095600/