gpt4 book ai didi

mysql - `Exists` 和 `IN` 在 MySQL 中给出两个不同的结果

转载 作者:行者123 更新时间:2023-11-29 18:38:24 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com