【问题标题】:How to change the last line of this query to inner join如何将此查询的最后一行更改为内部联接
【发布时间】:2014-03-22 09:47:25
【问题描述】:

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

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

【问题讨论】:

    标签: mysql


    【解决方案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() 计算也将相乘。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      相关资源
      最近更新 更多