2010-08-10 126 views
0

我需要在表格中搜索裏面有所有我需要的值的列項即 我有表:搜索在SQL Server問題

ID : 1 2 3 3 2 2 2 1 1 3 
VALUE : 5 6 5 3 6 7 2 1 9 0 

我想給一個StoredProc值的列表例如(「6,7,2」),它返回所有具有所有給定值的ID,它只返回2

如果我想搜索那些至少有一個值我知道我可以使用「IN」,但是我沒有發現任何值。

預先感謝您

阿夫欣Arefi

+0

您使用的數據庫是?他們每個人都有不同的功能可以支持這一點,所以知道這一點很重要。 – Oded 2010-08-10 07:22:07

+0

我正在使用MS SQL SERVER 2008 R2 – Scarlet 2010-08-10 07:24:19

回答

3

在SQL Server 2008中,你可以使用table value parameters

這些允許您將值表傳遞給存儲過程,並將其視爲任何其他表(用於子查詢,連接等)。

在查詢方面 - 如果你使用一個表值參數,就可以查詢它的大小(多少行),結合使用IN與上ID領域GROUP BYHAVING計數的數量行。

+0

另一種方法是將臨時表作爲存儲過程的輸入/輸出,但如果適用,表變量(如果適用)是一個更乾淨的解決方案。 – 2010-08-10 07:31:20

+0

謝謝 它的工作: SELECT CMC_ID FROM [CommodityClass],[CommodityClassDynamicAttributes] WHERE(CMC_ID = CCA_CMC_ID) AND(CCA_D​​AT_ID IN(@CCA_D​​AT_ID_LIST)) GROUP BY CMC_ID HAVING COUNT(CCA_D​​AT_ID)= @CCA_D​​AT_ID_COUNT – Scarlet 2010-08-10 09:16:26