在 SQL 服务器中使用内部连接时求和函数的错误结果

Wrong Result With Sum Function When Use Inner Join In SQL Server

我有两个表;

Human
-----------
id
Name
list<car> cars
Car
-----------
id
name
price
Human

我想要一辆人类汽车的总价,所以我使用了这个 SQL 代码:

SELECT
SUM(Price)
FROM Cars
INNER JOIN Humans ON Cars.Human_id = 1

但结果是错误的。

例如:

id name Price Human_id
1 car1 10000 1
2 car2 15000 1

当我为此 table 使用该代码时,结果是 50,000!但答案必须是 25,000。 看来这个错误和登记的汽车数量有关。 你能解释为什么 sum 函数和 inner join 会发生这种错误并计算数字倍数吗?

SELECT SUM(Price) FROM Cars WHERE Cars.Human_id = 1

SELECT
SUM(Price)
FROM Cars
INNER JOIN Humans ON Cars.Human_id = 1

这是所有人类和人类 1 的汽车之间的笛卡尔积。

你可能想要

SELECT
SUM(Price)
FROM Cars
INNER JOIN Humans 
 ON Cars.Human_id = Human.Id 
WHERE Human.Id = 1