我有一個表,其中一列作為 ID。我在 where 子句中給出了一組值,以使用 'in' 關鍵字比較 'ID' 列。如果該組值中的值在表中有記錄,我想選擇該行。如果不是,則必須選擇不在表中的值以及其他列的空值。
例如:有一個包含列 ID 和動物的表。它有8條記錄。
包含所有記錄的表
如果我運行查詢:
SELECT ID, Animal from #Temp1 where ID in (4,8)
它將回傳以下結果。
表結果過濾
但是,如果我運行查詢:
SELECT ID, Animal from #Temp1 where ID in (4,8,12)
它應該回傳以下結果。
具有所需值的表結果
uj5u.com熱心網友回復:
使用LEFT JOIN在音樂會string_split()代替
Select ID = A.value
,Animal = coalesce(B.Animal,'ID Not Found')
From string_split('4,8,12',',') A
Left Join YourTable B on A.value=B.ID
結果
ID Animal
4 Donkey
8 Hampster
12 ID Not Found
如果碰巧 string_split() 不可用
Select ID = A.value
,Animal = coalesce(B.Animal,'ID Not Found')
From (values (4)
,(8)
,(12)
) A(value)
Left Join YourTable B on A.value=B.ID
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/374191.html
標籤:sql sql-server 查询语句 条件语句 where子句
上一篇:MicrosoftSQLServer2016-T-SQL語言-'Gaps&Islands'問題-棘手的磁區
下一篇:在運行時從表中選擇特定欄位
