SQL LEFT JOIN 返回 0 而不是 NULL
我想连接两个表,并计算每种类型的记录数。 如果左表中没有该类型的记录,我希望返回 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
使用:
Use:
您可以使用“案例”
You can use "CASE"
例如,
这对我有用。
E.g.
That works for me.
对于 MsSQL,
ISNULL(nullable, value_if_null)
;对于 MySQL,COALESCE(nullable1, nullable2, ..., value_if_null)
。编辑:
据我所知,
COALESCE
对两者都适用,因此我选择它来替换NULL
列。现在我认为
COUNT()
ingNULL
值在 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 replaceNULL
columns.Now I think that
COUNT()
ingNULL
values returns0
in MySQL too, so I agree with Rashmi. Could you show us the query and the wanted result ?我不确定我是否理解了你的确切问题,但是在 sqlserver 的左连接中,
如果您的查询如下所示,您将得到的计数为 0:
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:
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.
查看 SQL Server 中的 IsNull 和 Sybase 。 在 Oracle 中使用 NVL。
Look at IsNull in SQL Server and Sybase. Use NVL in Oracle.