2017-08-31 72 views
0

比方說,我下表一起工作:SQL查找ID-S其中列的值等於對特定行的值

ID LETTER VALUE 

1  A  NON-VALID 
1  B  VALID 
1  C  VALID 
1  D  VALID 
2  A  NON-VALID 
2  B  VALID 
2  C  NON-VALID 
2  D  VALID 

所以,我要的是簡單的,但我還沒有發現類似的東西或者自己想出來。

我想要讓所有字母都定義爲VALID的ID。例如,如果我想在Bs和Cs上使用有效值,我希望我的數據集返回ID 1。

傻例如:

SELECT ID 
FROM table 
WHERE VALUE=VALID IN EVERY ROW WHERE LETTER BETWEEN 'B' AND 'C' 
+0

您可能要使用['和'](https://www.w3schools.com/sql /sql_and_or.asp)而不是「在每行中都有」 – litelite

+0

這將返回第2行B有效... –

+0

然後還使用DISTINCT – litelite

回答

1

你可以做這樣的事情:

select id 
from t 
where letter in ('B', 'C') and value = 'Valid' 
group by id 
having count(distinct letter) = 2; -- "2" is the number of letters in your list 
+0

如果我不知道先驗我想檢查的字母數量? –

+0

@JAMAICA。 。 。如果你知道這個列表,那麼你就知道這個數字。 –

相關問題