当子查询返回 null 时过滤 sql 查询中的行

问题描述 投票:0回答:1

我在子查询方面遇到问题。我想选择包含来自不同表的总和的行 - 到目前为止没有问题。但是我想过滤没有总和的行。

示例:

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”的值。

实现这一目标的最佳和最简单的方法是什么?

感谢您的阅读和帮助!

亲切的问候,

鲁迪

sql subquery
1个回答
0
投票

您不需要子查询。你可以这样做:

select a.id, sum(b.value) as total
from table1 a
join table2 b on b.id = a.id
group by a.id
© www.soinside.com 2019 - 2024. All rights reserved.