2014-07-07 70 views
0

我需要幫助,運行SQL查詢,我得到這個錯誤子查詢返回使用超過1個值和ISNULL命令

子查詢返回多個值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。

這是我試圖運行查詢:

select * 
from [Group] 
where [Group].Name IN (ISNULL((Select * from Split(@AdGroups)), [Group].Name)) 

編輯:

如果@AdGroupsNULL我需要所有的Group表中的行,但如果它有它,我的任何名稱只需要這些名稱的行。

回答

1

問題是Select * from Split(@AdGroups)返回多於一行。這個子查詢被用作ISNULL的參數。 ISNULL只取一個值,檢查它是否爲空,如果第一個值爲空,則返回第二個值。它無法處理多個值。

我不相信你需要的是null。

select * from [Group] where [Group].Name IN (* from Split(@AdGroups)) 

如果此查詢不提供所需的結果,請出示在編輯您的問題錯誤的結果和預期的結果。

0

移動isnull()邏輯到子查詢:

select * 
from [Group] g 
where g.Name IN (Select coalesce(t.name, g.Name) 
       from Split(@AdGroups)) as t(name) 
       ) 
相關問題