我在sql server中有一个如下表:
create table address (id int, city varchar(10));
insert into address values (1, 'Rome');
insert into address values (2, 'Dallas');
insert into address values (3, 'Cracow');
insert into address values (4, 'Moscow');
insert into address values (5, 'Liverpool');
insert into address values (6, 'Cracow');
insert into address values (7, 'Seoul');
我正在写一个关于 IN
操作员组件
SELECT City
FROM address
WHERE city IN ('Rome', 'Mumbai', 'Dallas', 'Delhi', 'Moscow')
我可以得到结果,但我想得到表中丢失或不可用记录的列表,如
| City | Status |
+--------+-----------+
| Rome | Available |
| Dallas | Available |
| Moscow | Available |
| Mumbai | Missing |
| Delhi | Missing |
+--------+-----------+
4条答案
按热度按时间kmpatx3s1#
为此,我建议使用行构造函数
values()
而不是in
:如果有重复的
city
在address
那就坐table吧exists
是更好的选择:h43kikqp2#
使用派生表
VALUES
所有的城市和CASE
带的表达式EXISTS
检查是否存在城市地址。db<>小提琴
pod7payv3#
你可以用iif
结果
disho6za4#
使用cte: