有什么办法可以通过直接查询我建议的内容吗?
当我通过IN
关键字搜索时,我希望查询返回表中不存在的主机名。
select * from cpus_view where hostname in ('HostnameEXIST', 'hostnameNOEXIST')
我想进行查询以返回HostnameNOEXITS
,这是表vista_cpus
中不存在的查询
您知道如何执行直接查询,而不必执行任何存储过程类型等操作吗?
答案 0 :(得分:1)
一种方法是使用派生表和行构造函数:
SELECT hostnames.hostname
FROM (VALUES('HostnameEXIST'), ('hostnameNOEXIST')) AS hostnames(hostname)
WHERE NOT EXISTS(
SELECT 1
FROM cpus_view
WHERE cpus_view.hostname = hostnames.hostname
);
答案 1 :(得分:1)
将您的列表用作数据集,然后left join
您的表:
SELECT v.hostname, c.Column1, c.Column2 --etc
FROM (
VALUES
('HostnameEXIST'),
('hostnameNOEXIST')
) v(hostname)
LEFT JOIN cpus_view c ON c.hostname = v.hostname
-- WHERE c.hostname IS NULL -- Activate this condition if you need only "hostnameNOEXIST" values
答案 2 :(得分:0)
您可以使用联接,然后过滤出不匹配的记录。
SELECT * FROM cpus_view AS A
LEFT JOIN vista_cpus AS B ON A.hostname = B.hostname
WHERE A.hostname IN ('HostnameEXIST','hostnameNOEXIST') AND B.hostname IS NULL