C# 返回where子句中找不到的数据,并且未返回';sql中的t更新

C# 返回where子句中找不到的数据,并且未返回';sql中的t更新,c#,sql,sql-server,string,text,C#,Sql,Sql Server,String,Text,在一个c#桌面应用程序中,我将通过条形码读取到文本文件中的数据列表;这是结果 R900, 27674T07, 27438T17, 27736T21, 26609T08, R901, 27770T12, 27833T07, 26402T12, 27771T09, 26003T13, R902, 26003T14, 26402T11, 26246T17, R904, 28055T09, 25356T08, 25825T07, 25556T09, 我正在将其转换为更新查询 UPDATE

在一个c#桌面应用程序中,我将通过条形码读取到文本文件中的数据列表;这是结果

R900, 27674T07, 27438T17, 27736T21, 26609T08,  
R901, 27770T12, 27833T07, 26402T12, 27771T09, 26003T13, 
R902, 26003T14, 26402T11, 26246T17, 
R904, 28055T09, 25356T08, 25825T07, 25556T09,  
我正在将其转换为更新查询

UPDATE TABLE SET NUMBER = R900 WHERE id in ( 27674T07, 27438T17, 27736T21, 26609T08)
UPDATE TABLE SET NUMBER = R901 WHERE id in ( 27770T12, 27833T07, **26402T12**, **27771T09**, 26003T13) 
UPDATE TABLE SET NUMBER = R902 WHERE id in ( 26003T14, **26402T11**, 26246T17) 
UPDATE TABLE SET NUMBER = R904 WHERE id in ( 28055T09, 25356T08, 25825T07, **25556T09**) 
最后,我执行这个SQL查询。但问题是我不知道在数据库的in子句中找不到哪个id。我需要向用户报告没有找到的id及其编号

例如,在数据库中找不到粗体id,因此无法更新。因此,预期结果是:

NUMBER     id
R901       26402T12
R901       27771T09
R902       26402T11
R903       25556T09

我怎样才能退回这个呢?

你可以这样做

declare @mytable as TABLE
    (
      Id nvarchar(20)
    )

UPDATE TABLE SET NUMBER = R900 
OUTPUT INSERTED.Id into @mytable
WHERE id in ( 27674T07, 27438T17, 27736T21, 26609T08)

Select * from @mytable
@mytable
将仅包含更新的
ID


希望这有帮助。

创建一个临时表,将拆分后的值存储到其中

然后


我真的很喜欢这个答案,虽然我没有使用。非常感谢你的回答。
SELECT temp.number, temp.Id 
FROM #temp temp 
LEFT OUTER JOIN TABLE ON temp.id = TABLE.id
WHERE TABLE.id is null