SQL内部加入和进一步的要求

时间:2014-07-01 14:53:04

标签: sql join where

我想从第二列中没有任何匹配条目的内部联接返回表条目。

让我们考虑以下两个表:

表一:

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

正是在这种情况下,我想让名字返回!

3 个答案:

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