in
查询
SELECT * FROM commodity
WHERE id IN (SELECT cid FROM specifications s WHERE s.id<600);
EXISTS
查询
SELECT * FROM commodity
WHERE exists(SELECT c.*
FROM specifications s,commodity c
WHERE s.id < 600 and c.id = s.cid );
为什么我使用上述两个查询获得两个单独的结果。我做错了什么?
答案 0 :(得分:0)
JOIN
运算符的子查询中不需要EXISTS
运算:
SELECT * FROM commodity c
WHERE exists(SELECT c.*
FROM specifications s
WHERE s.id < 600 and c.id = s.cid );
如果id
不是NULL
字段,则这两个查询现在是等效的。
答案 1 :(得分:0)
您没有链接内部查询中的外部商品表。它应该是这样的。
SELECT * FROM commodity c
WHERE exists(SELECT s.*
FROM specifications s
WHERE s.id < 600 and c.id = s.cid );