Mysql SQL查找id-s,其中列的值等于特定行的值

Mysql SQL查找id-s,其中列的值等于特定行的值,mysql,sql,Mysql,Sql,假设我使用下表: 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 所以,我想要的很简单,但我没有发现类似的东西,也没有自己发现 我想获

假设我使用下表:

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
所以,我想要的很简单,但我没有发现类似的东西,也没有自己发现

我想获取在我将定义的所有字母中都有效的ID,例如,如果我想在Bs和Cs上有有效的值,我希望我的数据集返回ID 1

愚蠢的例子:

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

您可以这样做:

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

您可能希望使用a而不是“在每行中,其中”来返回第2行B有效…然后也使用distinct,如果我事先不知道要检查的字母数,请使用distinct?@jacama。如果你知道名单,那么你就知道号码。