Este é um exemplo de uma consulta "conjuntos dentro de conjuntos". Eu recomendo a agregação com o
having
cláusula, porque é a abordagem mais flexível. select score
from t
group by score
having sum(id = 2) > 0 and -- has id = 2
sum(id = 4) > 0 -- has id = 4
O que isso está fazendo é agregar por pontuação. Em seguida, a primeira parte do
having
cláusula (sum(id = 2)
) está contando quantos "2"s existem por pontuação. A segunda é contar quantos "4"s. Somente pontuações que têm um "2" e "4" são retornadas.