在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
我该如何归还?
答案 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