Проблема SQL-запроса - PullRequest
       2

Проблема SQL-запроса

0 голосов
/ 10 августа 2011

Я получаю некоторые данные из таблицы. Предположим, мой запрос похож на это

select ename from emp where job="clerk"

Это также возвращает дубликаты эмали, но в том порядке, в котором они были введены.

Я изменил это на

select distinct ename from emp where job="clerk"

Я сделал это, чтобы избежать дублирования значений. Но ename идут в алфавитном порядке возрастания. Но я хочу, чтобы это было в том порядке, в котором я ввел данные в том виде, в каком они были, без использования отчетливых данных.

Ответы [ 2 ]

3 голосов
/ 10 августа 2011

Данные в таблицах SQL не имеют собственного порядка.Если вы хотите заказать, вы должны указать его, используя ORDER BY.Если вы используете DISTINCT, вы можете упорядочить только по выбранным столбцам!

Если у вас есть PK, это будет приблизительно:

select distinct id,ename from emp where job="clerk" order by id desc

Из более старых ответ (я знал, что это будет полезно):

Если вы не укажете ORDER BY, нет никаких гарантий относительно того, какие строки будут возвращаться первыми.

Но на практике,порядок обычно будет соответствовать порядку кластеризованного индекса и не будет меняться между вызовами.Не полагайтесь на это поведение.

Гарантирует ли ключевое слово LIMIT в MySQL порядок возвращаемых данных?

Нет порядка сортировки по умолчанию.Даже если таблица имеет кластерный индекс, вы не гарантированно получите результаты в таком порядке.Вы должны использовать заказ по предложению, если вам нужен конкретный заказ.

Лучшая практика SQL для работы с порядком сортировки по умолчанию

....

1 голос
/ 10 августа 2011

Если ваша таблица имеет ключ auto_increment (id), вы можете попробовать это:

SELECT ename FROM emp WHERE job="clerk" GROUP BY ename ORDER BY id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...