MySQL基于JOIN的列重复SUM

标签 mysql sql

我有这两个表

字幕_请求

movie_id | user_id | sent
2002     |    1    |   1
2002     |    2    |   1
2002     |    3    |   1
2002     |    4    |   1
2002     |    5    |   1
2002     |    6    |   1
2002     |    7    |   1
2002     |    8    |   1

电子邮件时间表

movie_id | schedule_id
2002     |  1
2002     |  2

这是我的问题

SELECT SUM(a.sent) as sent FROM subtitles_request a
JOIN email_schedule c on c.movie_id=a.movie_id

问题出在查询SUM(a.sent) as sent的这一部分。 sent 被重复,因为它们是 email_schedule 上连接的两行。因此,我得到的是 16,而不是 8

如何解决,让 sent 列不会加倍?

最佳答案

您可以尝试在 email_schedule 的子查询中添加 DISTINCT movie_id,因为 email_schedule 表中有两行 movie_id = 2002,将与subtitles_request表关联,其中movie_id = 2002

这样你就会得到2*8 = 16数据行。

CREATE TABLE subtitles_request(
    movie_id INT,
    user_id INT,
  sent INT
);


INSERT INTO subtitles_request VALUES (2002,1 ,1);
INSERT INTO subtitles_request VALUES (2002,2 ,1);
INSERT INTO subtitles_request VALUES (2002,3 ,1);
INSERT INTO subtitles_request VALUES (2002,4 ,1);
INSERT INTO subtitles_request VALUES (2002,5 ,1);
INSERT INTO subtitles_request VALUES (2002,6 ,1);
INSERT INTO subtitles_request VALUES (2002,7 ,1);
INSERT INTO subtitles_request VALUES (2002,8 ,1);
CREATE TABLE email_schedule
(
    movie_id INT,
    schedule_id INT
);

INSERT INTO email_schedule VALUES (2002,  1);
INSERT INTO email_schedule VALUES (2002,  2);

查询 1:

SELECT SUM(a.sent) as sent 
FROM subtitles_request a
JOIN (SELECT DISTINCT movie_id  FROM email_schedule) c on c.movie_id=a.movie_id

Results :

| sent |
|------|
|    8 |

关于MySQL基于JOIN的列重复SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52174870/

相关文章:

php - 我想在 mysql 日期行中添加 30 天

mysql - 词云和mysql全文

php - PHP 的 SQL Server 版本错误

mysql - 示例 GROUP_CONCAT

java - 无法为连接 URL '' : Tomcat & SQL Server JDBC driver 创建类 'null' 的 JDBC 驱动程序

sql - WHERE 子句中的逻辑处理顺序或 SQL 标准

java - JPA Unidrectional OneToMany 通过 JoinColumn 返回相同的记录 n 次而不是 n 个不同的记录

mysql - MariaDB 存储过程 - 在 INSERT 语句中出现错误 'Missing SELECT'

python - 带有 MultiIndex 列的 Pandas to_sql 索引

SQL 查询仅获取事件的开始和结束时间