检查两个表中是否存在字符串

时间:2019-12-18 10:10:08

标签: sql-server

如果给定的字符串(ID)存在于两个表中,我想返回ID。如何轻松实现?我尝试了加入,但不是放任不管

  SELECT t1.ACCOUNTNUM FROM table1 T1
         JOIN table2 T2 ON T1.ACCOUNTNUM = T2.ITEMID     
    where t1.accountnum = '123'

我也尝试过发布here的答案,但是语法All在最新版本的mssql中不起作用。

2 个答案:

答案 0 :(得分:1)

如果关系是一对一的,那么一个简单的INNER JOIN就可以了:

SELECT T1.ID
FROM dbo.Table1 T1
     JOIN dbo.Table2 T2 ON T1.ID = T2.ID;

或者,如果是一对多关系,则可以使用EXISTS

SELECT T1.ID
FROM dbo.Table1 t1 --Assumed this is the singleton table
WHERE EXISTS (SELECT 1
              FROM dbo.Table2 T2 --Assumed this is the many table
              WHERE T2.ID = T1.ID);

答案 1 :(得分:0)

假设两个表分别是A和B。它们都具有ID列,其类型为nvarchar(10)。然后,您可以尝试使用INNER JOIN来找出两个表是否具有相同的ID。

 SELECT A.ID FROM 
 A INNER JOIN B 
 ON A.ID =  B.ID
 WHERE A.ID = '123'

如果您有多个表(两个以上),并且想检查这些表中的任何一个是否具有特定的ID,那么您应该在这些表上尝试UNION操作。然后检查UNION的结果是否具有该特定ID。

SELECT RESULT.ID ( SELECT ID FROM  A 
                UNION 
                SELECT ID FROM  B 
                UNION 
                SELECT ID FROM  C 
                UNION 
                SELECT ID FROM  D 
                UNION 
                SELECT ID FROM  E ) RESULT 
WHERE  RESULT.ID = '123'