Притворись У меня есть cupcake_rating
стол:SQL Group By эквивалент
id | cupcake | delicious_rating
--------------------------------------------
1 | Strawberry | Super Delicious
2 | Strawberry | Mouth Heaven
3 | Blueberry | Godly
4 | Blueberry | Super Delicious
Я хочу, чтобы найти все кексы, которые имеют «супер вкусно» и рейтинг «РОТ Heaven». Я чувствую, что это легко достижимо с помощью предложения group by
и, возможно, having
.
Я думал:
select distinct(cupcake)
from cupcake_rating
group by cupcake
having delicious_rating in ('Super Delicious', 'Mouth Heaven')
Я знаю, что я не могу иметь два отдельных и заявления. Я был в состоянии достичь своей цели с помощью:
select distinct(cupcake)
from cupcake_rating
where cupcake in (select cupcake
from cupcake_rating
where delicious_rating = 'Super Delicious')
and cupcake in (select cupcake
from cupcake_rating
where delicious_rating = 'Mouth Heaven')
Это не будет удовлетворительным, так как только я добавить третий тип рейтинга я ищу, то запрос будет занять несколько часов (есть много кекса оценок).
'выбрать отдельный кекс из таблицы, где delicious_rating в (выберите delicious_ratings_here из таблицы)' – wootscootinboogie
это вернет клубнику и чернику, но на самом деле я хочу только клубника – MikeB
Вы можете быть удивлены, если вы запускаете тесты с различными версиями. Моя ставка будет на версиях 'IN',' EXISTS' и 'JOIN'. –