mysql - 连接创建错误的结果查询

标签 mysql sql join sum left-join

当我在查询中进行求和和左连接时,结果不再正确。这是因为在一张表中我加入的id比较常见,如何防止总和出错?

我有一个名为Norm的表格

ID: 1  LocationID: 1   Norm: 0,22

ID: 1  LocationID: 1   Norm: 0,25

我有一个名为Hour的表格

ID: 1   LocationID: 1

ID: 2   LocationID: 1

ID: 3   LocationID: 1

查询:

SELECT N.LocationID, SUM(N.Norm) FROM Norm N

结果:

LocationID: 1   Sum(N.Norm): 0,47

查询:

SELECT N.LocationID, SUM(N.Norm) FROM Norm N LEFT JOIN Hour H ON 
N.LocationID = H.LocationID

结果:

LocationID: 1 Sum(N.Norm): 1,41

脚本:

CREATE TABLE Norm` ( `ID` INT NOT NULL , `LocationID` INTNOT NULL , 
`Norm` DECIMAL(10,2) NOTNULL );

INSERT INTO `Norm`(`ID`, `LocationID`, `Norm`) 
VALUES (1,1, 0.22);

INSERT INTO `Norm`(`ID`, `LocationID`, `Norm`) 
VALUES (2,1, 0.25)


CREATE TABLE `Hour` ( `ID` INT NOT NULL , `LocationID` INTNOT NULL );

INSERT INTO `Hour`(`ID`, `LocationID`) VALUES (1, 1);
INSERT INTO `Hour`(`ID`, `LocationID`) VALUES (2, 1);
INSERT INTO `Hour`(`ID`, `LocationID`) VALUES (3, 1);

我需要连接,但希望总和正确,如第一个,我该怎么做?

最佳答案

你可以试试这个

   SELECT N.LocationID
        , SUM(N.Norm) 
     FROM Norm N 
LEFT JOIN (SELECT distinct locationid FROM Hour ) AS H 
       ON N.LocationID = H.LocationID
 GROUP BY N.LocationID

关于mysql - 连接创建错误的结果查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52293090/

相关文章:

php - 如何使用 CakePHP 3 连接多个表?

mysql - 在一个查询中从同一个表进行 UPDATE 和 SELECT

mysql - #1064 - 您的 SQL 语法有错误 : What is wrong with this query?

php - WordPress:使用 $wpdb->get_results 而不是 mysqli_query 会导致空变量

c# - 在分类账中查找客户发票的账龄。不根据发票编号过账贷方

mysql - 我如何通过多个值过滤一列(严格过滤)?

mysql - 如何检查两个表或子查询结果中存在的属性

mysql - 在同一个表中插入记录后,程序中未完成更新

java - 为什么 Hibernate 不填充这个外键列

php - Laravel 查询生成器中的嵌套查询