我有以下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(SELECT EntityID FROM omid.entity,其中PartyID = 1);
因为我不知道如何将其更改为内连接而不是使用内部选择(因为现在这个查询非常慢,我认为如果将最后一行更改为内连接而不是更好)
答案 0 :(得分: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()计算也将成倍增加。