MySQL Order-By Bug - PullRequest
       16

MySQL Order-By Bug

1 голос
/ 19 ноября 2010

Если я запускаю следующий запрос:

select * from mysql.user order by abcdef;

MySQL выдает следующую ошибку:

ОШИБКА 1054 (42S22): неизвестный столбец 'abcdef' в 'заказе'

Если я запускаю следующий подобный запрос:

select * from mysql.user order by "abcdef";

MySQL теперь выполняет запрос и игнорирует предложение order by (поскольку в таблице mysql.user отсутствует столбец с именем abcdef).

Это ошибка в MySQL? Почему вы хотите, чтобы ордер молчал, если фраза заключена в кавычки? Разве сообщение об ошибке не будет уместным при выполнении порядка в несуществующем столбце?

Ответы [ 3 ]

4 голосов
/ 19 ноября 2010

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

Большинство СУБД не принимает заказы по константе (это не имеет смысла), но MySQL делает.

3 голосов
/ 19 ноября 2010

Когда вы не используете кавычки, предполагается, что вы ссылаетесь на имя столбца, , которого не существует .

Это правильный функционал

0 голосов
/ 19 ноября 2010

В порядке упорядочения ожидается поле, которое вы хотите упорядочить, и, если вы хотите, чтобы оно росло, вы ставите рядом с ним asc, а если вы хотите, чтобы оно опускалось, вы ставите desc, как показано ниже

SELECT *
  FROM mysq.user
 ORDER BY username ASC
...