SQL LEFT JOIN 返回 0 而不是 NULL

发布于 2024-07-25 06:45:59 字数 83 浏览 8 评论 0原文

我想连接两个表,并计算每种类型的记录数。 如果左表中没有该类型的记录,我希望返回 0,而不是 null。

我怎样才能做到这一点?

I want to join two tables, with the number of records for each type being counted. If there are no records of that type in the left table I want a 0 to be returned, not a null.

How can I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

凉世弥音 2024-08-01 06:45:59

使用:

ISNULL(count(*), 0)

Use:

ISNULL(count(*), 0)
狼性发作 2024-08-01 06:45:59

您可以使用“案例”

SELECT T1.NAME, CASE WHEN T2.DATA IS NULL THEN 0 ELSE T2.DATA END
FROM T1 LEFT JOIN T2 ON T1.ID = T2.ID

You can use "CASE"

SELECT T1.NAME, CASE WHEN T2.DATA IS NULL THEN 0 ELSE T2.DATA END
FROM T1 LEFT JOIN T2 ON T1.ID = T2.ID
海夕 2024-08-01 06:45:59
COALESCE(XXX, 0)

例如,

SELECT branch1_id, branch1_name, COALESCE(devnum, 0) FROM
    branch1 as S LEFT JOIN view_inner_zj_devnum as B ON S.branch1_id = B.bid1 GROUP BY branch1_id;

这对我有用。

COALESCE(XXX, 0)

E.g.

SELECT branch1_id, branch1_name, COALESCE(devnum, 0) FROM
    branch1 as S LEFT JOIN view_inner_zj_devnum as B ON S.branch1_id = B.bid1 GROUP BY branch1_id;

That works for me.

花想c 2024-08-01 06:45:59

对于 MsSQL,ISNULL(nullable, value_if_null);对于 MySQL,COALESCE(nullable1, nullable2, ..., value_if_null)

编辑:
据我所知,COALESCE 对两者都适用,因此我选择它来替换 NULL 列。

现在我认为 COUNT()ing NULL 值在 MySQL 中也会返回 0,所以我同意 Rashmi 的观点。 您能否向我们展示查询和想要的结果?

ISNULL(nullable, value_if_null) for MsSQL, COALESCE(nullable1, nullable2, ..., value_if_null) for MySQL.

Edit:
As I'm told, COALESCE works for both, so I'd choose that to replace NULL columns.

Now I think that COUNT()ing NULL values returns 0 in MySQL too, so I agree with Rashmi. Could you show us the query and the wanted result ?

临走之时 2024-08-01 06:45:59

我不确定我是否理解了你的确切问题,但是在 sqlserver 的左连接中,
如果您的查询如下所示,您将得到的计数为 0:

select t1.id, count(t2.id)
from table1 t1
left outer join table2 t2
on t1.id = t2.id
group by t1.id

I am not sure if I have understood your exact problem, but in sqlserver on a left join,
you will get a count as 0 if your query is something like this:

select t1.id, count(t2.id)
from table1 t1
left outer join table2 t2
on t1.id = t2.id
group by t1.id
银河中√捞星星 2024-08-01 06:45:59

COALESCE 比 ISNULL 或 NVL 更具交叉兼容性(它适用于 MSSQL、Oracle、MySQL、Derby 等)。 但我不确定性能差异。

COALESCE is more cross-compatible than ISNULL or NVL (it works on MSSQL, Oracle, MySQL, Derby, et al.). But I am not sure about the performance differences.

筑梦 2024-08-01 06:45:59

查看 SQL Server 中的 IsNullSybase 。 在 Oracle 中使用 NVL

Look at IsNull in SQL Server and Sybase. Use NVL in Oracle.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文