我必须在表格(“NamesAges”)中搜索一组名称的名称和年龄。问题是该表有数千个名称,我搜索的名称集有数百个,并且集合中的所有名称都不在表中。如何获取缺少名称的显式NULL条目。
具体做法是:
\OwlyCode\StreamingBird
名字集==(Allan,Bonita,Chandra,Daniel)
我能做到:
String foo = "foo"
...
.where(FOO_TABLE.FOO.equal(StringUtils.rightPad(foo,FOO_TABLE.FOO.getDataType().length()))
但我希望得到一些迹象表明Bonita和Chandra在表中缺失。
答案 0 :(得分:1)
一种方法:
SELECT a.Name, b.Age, case when b.Name IS NULL THEN 'Missing' ELSE 'OK' End Status
FROM (
SELECT 'Allan' Name
UNION SELECT 'Bonita'
UNION SELECT 'Chandra'
UNION SELECT 'Daniel'
) a
LEFT JOIN [NamesAges] b ON b.Name = a.Name
答案 1 :(得分:0)
假设名称集在另一个表中,您可以使用左连接:
select s.name, n.age
from set_of_names s
left join names_and_ages n on s.name = n.name
如果找到名称匹配,这将为您提供名称集中的所有名称以及其他表中的年龄(否则为null)。
答案 2 :(得分:-1)
如果您使用的是一个表,请使用第二个表的不同句柄将表连接到自身。这将有效,并将返回NULL
以查找您提供的列表中没有的所有内容。如果您希望查询管理器显示单词NULL
,您也可以修改设置以执行该操作,或者您可以在没有任何返回的情况下编写CASE
语句并选择null
作为选项。 / p>
select na1.NAME
from NamesAges na1
right join NamesAges na2
on na1.name = na2.NAME
and na2.NAME in ('Allan', 'Bonita', 'Chandra', 'Daniel')