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

查询逻辑,错误的期望结果mysql,mysql,Mysql,问题是,假设按id排序的前两个结果在app_详细信息中,那么前两个结果的计数*不等于0。但在MobileApps表中有更多的结果,它们将等于0 我想它应该首先从app_details中选择*trackId=dtable.SourceID=0,然后按id订购ASC LIMIT 0,2,而不是相反,有什么可能的方法可以解决这个问题 谢谢你的查询,但是更好的方法是: SELECT * FROM MobileApps as dtable WHERE (SELECT COUNT(*) as c

问题是,假设按id排序的前两个结果在app_详细信息中,那么前两个结果的计数*不等于0。但在MobileApps表中有更多的结果,它们将等于0

我想它应该首先从app_details中选择*trackId=dtable.SourceID=0,然后按id订购ASC LIMIT 0,2,而不是相反,有什么可能的方法可以解决这个问题


谢谢你的查询,但是更好的方法是:

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
或:

请参见此处的所有3个版本:


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

它对我来说是正确的:闻起来像是一个流产。。。不存在选择。。。对我来说。问:你想从没有应用程序详细信息的MobileApps获取所有信息,对吗?如果这是OP的任务,我更喜欢第二种选择,更紧凑、更清晰。
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