gpt4 book ai didi

mysql - 查询逻辑,mysql期望结果错误

转载 作者:行者123 更新时间:2023-11-29 13:20:05 25 4
gpt4 key购买 nike

SELECT * FROM 
MobileApps as dtable
WHERE (SELECT COUNT(*) as c
FROM app_details
WHERE trackId=dtable.SourceID)=0
ORDER BY id ASC
LIMIT 0,2

问题是按 id 排序的前两个结果位于 app_details 中,因此前两个结果的 COUNT(*) 不等于 0。但 MobileApps 表中还有更多等于 0 的结果。

我认为它会首先SELECT * FROM app_details WHERE trackId=dtable.SourceID)=0,然后ORDER BY id ASC LIMIT 0,2,而不是其他方式周围,​​有什么可能的方法来解决它?

谢谢

最佳答案

您的查询有效,但更好的编写方法是:

SELECT dtable.*
FROM MobileApps dtable
LEFT JOIN app_details d ON d.trackId = dtable.SourceID
WHERE d.trackId IS NULL
ORDER BY dtable.id
LIMIT 0, 2

或者:

SELECT *
From MobileApps dtable
WHERE NOT EXISTS (SELECT *
FROM app_details d
WHERE d.trackId = dtable.SourceID)
ORDER BY id
LIMIT 0, 2

在此处查看所有 3 个版本:http://www.sqlfiddle.com/#!2/536db/2

对于大型表,您可能应该对它们进行基准测试,看看哪一个 MySQL 优化得最好。

关于mysql - 查询逻辑,mysql期望结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20960538/

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