Sql 3表(1桥)选择表3在表1中没有条目的位置
这是一个很难回答的问题。让我澄清一下Sql 3表(1桥)选择表3在表1中没有条目的位置,sql,sql-server,Sql,Sql Server,这是一个很难回答的问题。让我澄清一下 Table 1: ID1 Table 2: ID1, ID2 Table 3: ID2 ID不是密钥,可以为NULL。每个表代表一个站,因此在世界上,他们在表(站)2中输入19的ID1,然后在表(站)2中输入ID2。然后在表(站)3中输入。 不管出于什么原因,他们都没有在表1中输入任何内容……也许是线路走得太快了 表2应包含将每个ID1和ID2连接在一起的条目 ID1 = 19 -Table 1 ID2 = 29 -Table 3
Table 1: ID1
Table 2: ID1, ID2
Table 3: ID2
ID不是密钥,可以为NULL。每个表代表一个站,因此在世界上,他们在表(站)2中输入19的ID1,然后在表(站)2中输入ID2。然后在表(站)3中输入。
不管出于什么原因,他们都没有在表1中输入任何内容……也许是线路走得太快了
表2应包含将每个ID1和ID2连接在一起的条目
ID1 = 19 -Table 1
ID2 = 29 -Table 3
表2应包含一个条目:
ID1 19, ID2 29
然而,情况并非总是如此。有时ID在传输过程中“丢失”,如上面的示例所示
我想找到一种方法,我可以看到表3中是否有任何条目在表1中没有相应条目。因此,结果如下所示:
ID1=NULL ID2=19 ID3=29您可以简单地使用
左外部联接
与配对,其中为NULL。
SELECT ID
FROM table_3 as three
INNER JOIN table_2 as two
ON two.ID2 = three.ID2
LEFT OUTER JOIN table_1 as one
ON one.ID = two.ID1
WHERE one.ID IS NULL
AND three.ID IS NOT NULL ;
根据您的评论:
我想找到一种方法,我可以看到表3中是否有任何条目在表1中没有相应条目
我觉得你似乎在逃避能够做到以下几点:
SELECT * FROM table3 t3
LEFT JOIN table1 t1 ON t3.id=t1.id
WHERE t1.ID IS NULL
这是从表y中查找缺少x的一种非常标准的技术。这也是一个常见的面试问题
您也可以这样做:
SELECT *
FROM table3 t3
WHERE NOT EXISTS
(
SELECT id
FROM table1
WHERE id = t3.id
)
一些示例数据和所需的输出将大大有助于回答这个问题。这是关于查找缺少元素的左连接的基本面试问题。