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
    )

一些示例数据和所需的输出将大大有助于回答这个问题。这是关于查找缺少元素的左连接的基本面试问题。