ORDER BY изменяет результат запроса, даже если сортируемый столбец отсутствует в операторе SELECT
Я работал над некоторыми видео по Oracle PL/SQL и пришел к тому моменту, когда обсуждаемый запрос мне не совсем понятен. В частности, как результат ORDER BY
предложение играть в результирующий запрос.
Глядя на эту структуру таблиц:
категория
- category_id (PK)
- parent_id
- название
Шоу
- show_id (PK)
- category_id (FK)
- act_id (FK)
- venue_id (FK)
- название
- showdate
- price_multiplier
И отношение 0 к 1 или много между таблицами Category и Show (так что для любой категории может быть 0 или более записей в таблице Show).
Как работает ORDER BY
пункт изменить то, что достигается GROUP BY
оговорка, если COUNT (DISTINCT s.show_id)
не является перечисленным столбцом / полем в инструкции SELECT
Запрос:
SELECT c.name, COUNT(DISTINCT s.category_ID) "First Categories"
FROM category c, show s
WHERE c.category_id = s.category_id
GROUP BY c.name
ORDER BY COUNT (DISTINCT s.show_id);
(Это в ответ на отрицательное голосование: я хотел бы рассмотреть это в том смысле, что я искал ответ на досках до его публикации, а также за его пределами. Я чувствовал, что этот пример охватывает хорошее количество основных и важные понятия между предложениями GROUP BY, SELECT и ORDER BY и могут быть полезны для кого-то, кто только учится, поскольку это достаточно уникальный пример, но достаточно базовый для понимания и применения в будущем.)
Спасибо, милостиво!
1 ответ
Расчет COUNT (DISTINCT s.show_id)
по-прежнему применяется к каждой группе c.name
и результирующие строки сортируются по нему - он просто не отображается в окончательном наборе результатов.