带有空项的SQL列表

时间:2016-04-25 18:29:37

标签: sql

我必须在表格(“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在表中缺失。

3 个答案:

答案 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')