Sql server 2005 TSQL/SQL 2005/2008从一个不在其他表中的表返回行

Sql server 2005 TSQL/SQL 2005/2008从一个不在其他表中的表返回行,sql-server-2005,tsql,Sql Server 2005,Tsql,我必须比较一个表中不在另一个表中的一行 表a ID 1 2 3 4 NULL 表B ID 1 4 在比较表A和表B时,以下o/p(可以忽略空值) 我试过了 SELECT case T.ID when isnull(T.ID,0)=0 then 'NOT FOUND' case T.ID when isnull(T.ID,0)<>0 then 'FOUND' end,T.ID FROM TableA T

我必须比较一个表中不在另一个表中的一行

表a

ID
1
2
3
4
NULL
表B

ID
1
4
在比较表A和表B时,以下o/p(可以忽略空值)

我试过了

SELECT
      case T.ID when isnull(T.ID,0)=0 then 'NOT FOUND'
      case T.ID when isnull(T.ID,0)<>0  then 'FOUND'
     end,T.ID 
     FROM
          TableA  T 
               LEFT JOIN
          TableB N 
   ON T.ID=N.ID
选择
案例T.ID当isnull(T.ID,0)=0时,则为“未找到”
当isnull(T.ID,0)0时的案例T.ID,然后“找到”
完,T.ID
从…起
表
左连接
表b N
在T.ID=N.ID上
它以“=”附近不正确的语法结束,而且我不知道查询是否正确。

试试这个:

SELECT a.ID, 
    CASE WHEN b.ID IS NULL THEN 'NOT FOUND' ELSE 'FOUND' END AS Status
FROM TableA a
    LEFT JOIN TableB b ON a.ID = b.ID
请注意案例陈述结构的差异-这是您的问题。

尝试以下方法:

SELECT a.ID, 
    CASE WHEN b.ID IS NULL THEN 'NOT FOUND' ELSE 'FOUND' END AS Status
FROM TableA a
    LEFT JOIN TableB b ON a.ID = b.ID
SELECT 
T.ID 
FROM TableA T WHERE NOT EXISTS ( SELECT X.ID FROM TableB X WHERE X.ID = T.ID)
请注意案例陈述结构的差异——这是您的问题

SELECT 
T.ID 
FROM TableA T WHERE NOT EXISTS ( SELECT X.ID FROM TableB X WHERE X.ID = T.ID)
如果你想得到“找到”或“没有找到”的答案,就去看看AdaTheDev发布的内容


如果您想要“找到”或“未找到”答案,请按照AdaTheDev发布的内容生成结果,如问题所示:

SELECT ID,
       CASE WHEN EXISTS (SELECT * FROM TableB WHERE ID = TableA.ID)
            THEN 'FOUND'
            ELSE 'NOT FOUND'
       END AS STATUS
  FROM TableA
但如果您只对丢失的记录感兴趣:

SELECT ID
  FROM TableA
 WHERE NOT EXISTS (SELECT * FROM TableB WHERE ID = TableA.ID)

要生成问题中所示的结果,请执行以下操作:

SELECT ID,
       CASE WHEN EXISTS (SELECT * FROM TableB WHERE ID = TableA.ID)
            THEN 'FOUND'
            ELSE 'NOT FOUND'
       END AS STATUS
  FROM TableA
但如果您只对丢失的记录感兴趣:

SELECT ID
  FROM TableA
 WHERE NOT EXISTS (SELECT * FROM TableB WHERE ID = TableA.ID)

b1时为
情况,b2时为v1,v2时为END
b1时为
情况,b2时为v1,v2时为END