我有如下的sql语句:
SELECT FORMAT(((SUM(sureness)/count(*))+1)/2, 4) FROM tweet
INNER JOIN entity_topic_epoch_dataitem_relation r ON r.DataitemID = tweet.ID
INNER JOIN epoch ON epoch.ID = r.EpochID
WHERE epoch.StartDateTime >= '2013/12/05'
AND epoch.EndDateTime <='2013/12/10' and DataitemType=3 and r.EntityID in(SELECT EntityID
FROM omid.entity where PartyID=1);
我的问题是行 r.EntityID in(SELECT EntityID FROM omid.entity where PartyID=1);
因为我不知道如何将它更改为内部连接而不是使用内部选择(因为现在这个查询非常慢而且我认为如果将最后一行更改为内部连接它会变得更好)
最佳答案
SELECT FORMAT(((SUM(sureness)/count(*))+1)/2, 4) FROM tweet
INNER JOIN entity_topic_epoch_dataitem_relation r ON r.DataitemID = tweet.ID
INNER JOIN epoch ON epoch.ID = r.EpochID
INNER JOIN omit.entity AS o ON r.EntityID = o.EntityID
WHERE epoch.StartDateTime >= '2013/12/05'
AND epoch.EndDateTime <='2013/12/10' and DataitemType=3
AND o.PartyID=1;
但这假设对于 omit.entity 中给定的 PartyID,每个 EntityID 只有一行。如果每个 EntityID 可能有多行,那么它们将乘以其他表中的行,并且您的 SUM() 计算也将相乘。
关于mysql - 如何将此查询的最后一行更改为内部联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22572353/