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

标签 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 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/

相关文章:

mysql - 使用重定向从 bat 文件运行 mysql 命令

mysql where语句日期问题

sql - 表名有空格的优缺点

mysql - 从 PHP 应用程序导入 Rails 应用程序时出现 UTF-8 编码问题

MySQL存储过程搜索另一个表

mysql - 根据另一个表中选定的行过滤一个表中的记录集

mysql - 选择不同的,在行尾显示计数

php - 在 Laravel 中更新模型关系

php - 在 php 中使用四个选择字段搜索数据库

MySQL:仅当存在特定用户 ID 或用户 ID 为空时才获取结果