2017-01-09 98 views
0

我對sql和編程比較新,所以請耐心等待。如何在sql查詢中使用變量作爲子句?

我有其中存在類似於以下三列的表格:

penID inkID color 
01  2  red 
02  2  red 
03  2  red 
04  1  blue 
05  1  blue 
06  3  black 
07  3  purple 
08  -5  yellow 

有一個獨特penID到每一個筆,每inkID應該對應於它的正確的顏色(具有inkID = 2每筆應僅對應於紅色),但我們需要追蹤一些異常情況。 現在,假設我有數千個不是連續的數字的inkID(我們可以有2,6,7,8,11..

我所做的是查詢獲取所有可用InkID的列表,而不是我想要的針對每個InkID的另一個查詢來驗證相同的inkID是否有不同的顏色。

因爲我有成千上萬,我不知道該怎麼做,而不必手動編寫一千個查詢(不是一個機會)。 我正在考慮使用c#框架將第一個查詢的輸出存儲在列表中,並將第二個查詢中的每個列表項作爲變量傳遞,但我不知道這是否可能。

這是迄今爲止我的第二個查詢:

Select distinct Color 
from TableName 
where InkID = 12 

(比方說12的就事論事)

任何建議是有,我可以用任何其他方法?

預先感謝您

+0

你爲什麼認爲你需要編寫數千個查詢?我會建議在基本SQL教程上進行谷歌搜索,以及如何在網上構建我們稱之爲「參數化查詢」的大量示例。 – MethodMan

+0

如果將作品添加到此目標中,該功能將會很棒 –

+1

類似於'選擇inkid,通過inkid從表格組中計數(不同的顏色)應該給你一個墨水ID列表和每個人有多少不同的顏色。如果你真的想要的顏色只是'選擇不同的墨水,顏色從表' – juharr

回答

1

如果你

SELECT inkID, COUNT(DISTINCT color) 
FROM TableName 
GROUP BY inkID 
HAVING COUNT(DISTINCT color) > 1; 

,將返回所有的InkIDs與分配不止一種顏色。

+1

DISTINCT'不是一個功能! 'COUNT(DISTINCT color)'使代碼更清晰! – jarlh

+0

工作,非常感謝 – Ylenia88m

相關問題