我在子查询方面遇到问题。我想选择包含来自不同表的总和的行 - 到目前为止没有问题。但是我想过滤没有总和的行。
示例:
Table1 只有一个 Id 列,Table2 有一个 Id 列和一个 value 列 - 都是 int 数据类型。
现在我想查看 Table1 中的所有条目并计算 Table2 中该 Id 的总和。 我的问题很简单:
select Id,
(Select sum(Value) from Table2 where Table1.Id = Table2.Id) as Total
From
Table1;
但是在 Table2 中只有 Id = 1 和 Id = 3 的条目。由于我的查询为我提供了所有三行的值(对于 Id = 2 显示 NULL),我想抑制 Id = 2 的行。
我试过了
select Id,
(Select sum(Value) from Table2 where Table1.Id = Table2.Id) as Total
From
Table1
where NOT (Total IS NULL);
不幸的是,这在 SQL 中是不允许的,因为我无法访问“Total”的值。
实现这一目标的最佳和最简单的方法是什么?
感谢您的阅读和帮助!
亲切的问候,
鲁迪
您不需要子查询。你可以这样做:
select a.id, sum(b.value) as total
from table1 a
join table2 b on b.id = a.id
group by a.id