我想从第二列中没有任何匹配条目的内部联接返回表条目。
让我们考虑以下两个表:
表一:
Name Number
A 1
A 2
A 4
表二:
Name ID
A 3
查询应返回Name = A ID = 3。如果ID为4,则查询不应返回任何内容。这在SQL中是否可行?谢谢你的任何提示!
编辑: 连接表看起来像这样:
Name Number ID
A 1 3
A 2 3
A 4 3
因此,如果我执行此查询,则结果集中没有条目:
SELECT * FROM TABLE_ONE INNER JOIN TABLE_TWO ON TABLE_ONE.NAME=TABLE_TWO.NAME WHERE NUMBER=ID
正是在这种情况下,我想让名字返回!
答案 0 :(得分:2)
是的,使用LEFT或FULL OUTER连接,而不是使用INNER连接。当您在其中一个表中有值时,这将允许其他表中的空值出现。
FULL OUTER JOIN关键字返回左表(table1)和右表(table2)中的所有行。
LEFT JOIN关键字返回左表(table1)中的所有行,右表(table2)中的匹配行。没有匹配时,右侧的结果为NULL。 (还有一个RIGHT连接,但它与左连接完全相同,只返回RIGHT表而不是左边的所有行。)
答案 1 :(得分:0)
正如@rhealitycheck所说,一个完整的外部联接会起作用。我发现this博文有助于解释联接。附:我不能发表评论(否则我会发表评论)。
答案 2 :(得分:0)
SELECT *
FROM Table2
WHERE NOT EXISTS (
SELECT *
FROM Table1
WHERE Table1.Name = Table2.Name AND Table1.Number = Table2.ID
)