如何将此查询的最后一行更改为内部联接

时间:2014-03-22 01:38:44

标签: mysql

我有以下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);

因为我不知道如何将其更改为内连接而不是使用内部选择(因为现在这个查询非常慢,我认为如果将最后一行更改为内连接而不是更好)

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()计算也将成倍增加。