Должен ли ORDER BY влиять на количество строк, возвращаемых запросом SELECT?

Я мучаюсь от нормализации ужасной устаревшей базы данных и обнаружил, как мне кажется, ошибку в СУБД.

Этот запрос возвращает результаты, как я и ожидал:

SELECT DISTINCT RIGHT(SQUEEZE(thing_id), 2) AS thing_id, TRIM(thing_name)
FROM thing
ORDER BY thing_id, thing_name;
(16 rows)

При первом выполнении запроса я непреднамеренно использовал неправильные столбцы в ORDER BY, как показано ниже:

SELECT DISTINCT RIGHT(SQUEEZE(thing_id), 2) AS thing_id, TRIM(thing_name)
FROM thing
ORDER BY thing_name, location;
(33 rows)

Обратите внимание, что единственное, что нужно изменить, это ORDER BY, а количество возвращаемых строк увеличивается с 16 до 33. Результаты, которые он дает, не являются DISTINCT, как указано в запросе.

Я считаю, что это явная ошибка, но коллега говорит, что это нормально, потому что, когда мы упорядочиваем по «местоположению», он выбран и включен невидимо в результаты

Должен ли ORDER BY когда-либо влиять на количество строк, возвращаемых в запросе SELECT?

РЕДАКТИРОВАТЬ: я попросил другого человека просмотреть запросы, И я скопировал запросы в два отдельных файлов, а затем запускал для них команду diff.Со 100% уверенностью можно сказать, что единственная разница между двумя запросами заключается в том, что e столбцы, перечисленные в ORDER BY.

ОБНОВЛЕНИЕ: Ingres выпустила исправление 14301 с исправлением: «Ошибка 126640 (ОБЩАЯ) Запрос с выражением упорядочивания и отдельным агрегатом возвращает больше строк, чем ожидалось. Столбцы в выражении упорядочивания отсутствуют в списке выбора. "

т. е. рассматриваемый запрос теперь приведет к ошибке, поскольку результаты неверны.

5
задан rusty_turkey 23 July 2012 в 06:30
поделиться