Sql server 2005 TSQL/SQL 2005/2008从一个不在其他表中的表返回行
我必须比较一个表中不在另一个表中的一行 表aSql 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
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