我有三个表 t1,t2,t3。T3 与 t2 相关,t2 与 t1 相关。我有这个选择
select t1.id,sum(t3.column)
from
t1
join t2 on t2.fk = t1.id
join t3 on t3.fk = t2.id
where t1.column = 'something'
group by t1.id,t3.fk;
select without group by 有 120 行。和
group by t3.fk
它有 5 行。和
group by t1.id it have 1 row
这还是可以的。但如果我有
group by t3.fk,t1.id
它有 5 行。我预计只有 1 行。示例数据:
t1.id |t1.some_column
5 |"some data"
t2.id |t2.fk |t2.some_column
1 |5 |"a"
2 |5 |"b"
3 |5 |"c"
4 |5 |"d"
5 |5 |"e"
t3.id |t3.fk |t3.column
1 |1 |1
......................
24 |2 |1
......................
48 |3 |1
......................
72 |3 |1
......................
96 |3 |1
......................
选择返回:
t1.id |sum(t3.column)
5 |24
5 |24
5 |24
5 |24
5 |24
当我按 t1.id 分组时,我不明白为什么有 5 行具有相同的 t1.id 。我知道如果它只返回一行,我会丢失有关 sum 的信息,但它也会在 select 中没有 sum 的情况下这样做。我知道这个选择很愚蠢而且没有意义,但它可能有助于我更好地理解。