返回在where子句中找不到的数据,并且没有在sql中更新

时间:2014-09-03 06:17:36

标签: 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 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

我该如何归还?

2 个答案:

答案 0 :(得分:2)

你可以做这样的事情

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仅包含更新的Ids

希望这有帮助。

答案 1 :(得分:0)

创建临时表以将拆分值存储到其中。

然后

SELECT temp.number, temp.Id 
FROM #temp temp 
LEFT OUTER JOIN TABLE ON temp.id = TABLE.id
WHERE TABLE.id is null