sql - SQL 在“WHERE IN ()”子句中显示所有带有 COUNT 的值
问题描述
我有以下查询:
select postal_code, count(postal_code) as c
from postal_codes
where postal_code in ('A0A 0A1', 'A0A 0A2', 'A0A 0A3', 'A0A 0A4', 'A0A 0B1', 'A0A 1B1', 'A0A 1B2')
group by postal_code
数据库中不存在最后两个值('A0A 1B1'、'A0A 1B2'),因此不会显示它们。我希望它们以 0 的 COUNT() 值显示。
该查询将只显示前 5 个计数为 1,但我需要全部 7 个,最后两个计数为 0。
那可能吗?
基本上我有一个值列表(带有“WHERE IN()”),我需要检查它们是否存在于数据库中。
谢谢!
解决方案
您可以使用VALUES
构造并执行以下操作LEFT JOIN
:
select t.postal_code, count(p.postal_code) as c
from ( values ('A0A 0A1'), ('A0A 0A2'), ('A0A 0A3'), ('A0A 0A4'), ('A0A 0B1'), ('A0A 1B1'), ('A0A 1B2')
) t(postal_code) left join
postal_codes p
on p.postal_code = t.postal_code
group by t.postal_code;
推荐阅读
- reactjs - 使用 Jest 和 Enzyme 调用函数
- matlab - 如果只知道总成本,我如何编写脚本来查找列表中每个项目的成本?MATLAB
- jquery - 获取当前视口上元素的正确值
- laravel - Laravel 选项用于在不占用连接的情况下初始化 pusher 和 echo
- r - R:在三个数据帧中查找每个元素的标准差
- c# - android System.DateTime.now 的 Unity 系统时间不起作用?
- c# - 将依赖项注入 IConsumer
- scala - 用于转换任意大小的元组的多态函数
- google-apps-script - 替换静态文本谷歌脚本旁边的文本
- c# - 如何在通过 AppContainer 检查的 UWP 应用程序中使用 VS2013 中的 .exe?