loading..
Русский    English
16:39
листать

Простой оператор SELECT стр. 3

Сортировку можно выполнять даже по столбцам, отсутствующим в списке SELECT. Естественно, эти столбцы должны присутствовать на выходе предложения FROM. Например, чтобы вывести список моделей PC, упорядоченный по убыванию цены, можно написать

Консоль
Выполнить
  1. SELECT model FROM PC
  2. ORDER BY price DESC;

Обратите внимание, что сама цена (price) не выводится запросом. Исключением является неоднозначная ситуация, возникающая при исключении дубликатов. Так запрос

Консоль
Выполнить
  1. SELECT DISTINCT model FROM PC
  2. ORDER BY price DESC;
уже вызовет ошибку:

ORDER BY items must appear in the select list if SELECT DISTINCT is specified.

(Элементы ORDER BY должны входить в список выбора, если указывается SELECT DISTINCT.)

По той же причине не будет работать запрос с группировкой

Консоль
Выполнить
  1. SELECT model FROM PC
  2. GROUP BY model
  3. ORDER BY price DESC;

Column "PC.price" is invalid in the ORDER BY clause because it is not contained in either an aggregate function or the GROUP BY clause.

(Столбец "PC.price" недопустим в предложении ORDER BY, так как он не содержится в агрегатной функции или предложении GROUP BY.)

Однако если неоднозначность устранить (выполнить сортировку по какому-либо агрегатному значению для группы), то можно "подправить" запрос:

Консоль
Выполнить
  1. SELECT model FROM PC
  2. GROUP BY model
  3. ORDER BY MAX(price) DESC;

Примечание:

Все приведенные здесь запросы (в том числе ошибочные) будут работать под MySQL, которая сама устраняет неоднозначность. Спросите как? Загляните в документацию MySQL. :-)

Bookmark and Share
Страницы: 1 2 3
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INFORMATION_SCHEMA INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker Больше тэгов
Учебник обновлялся
несколько дней назад
обмен с advcash
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100