MySQL: Что ASC что DESC всеравно берет с конца

  • Автор темы Автор темы one
  • Дата начала Дата начала

one

Client
Регистрация
22.09.2015
Сообщения
7 001
Реакции
1 308
Баллы
113
Как так? По любому берутся значения из конца таблицы а надо с начала.

Что так.
Код:
Развернуть Свернуть Копировать
ORDER BY last_used_time ASC LIMIT 1;

Что так.
Код:
Развернуть Свернуть Копировать
ORDER BY last_used_time DESC LIMIT 1;
 
так попробуй LIMIT 0,1
 
Ни кто не подскажет решения данного "феномена"?
 
А тип поля last_used_time случайно не строка?
 
Ни кто не подскажет решения данного "феномена"?
Демоданные добавьте, без них угадать что там в таблице в этом поле сложновато. Скорее всего сортировка по типу поля не дает результата, т.к. данные не позволяют это сделать.
Всегда можно добавить авто ID и сортировать по нему.
 
99,99% что тип поля не timestamp, иначе откуда там 0
 
сделай полную выборку по этому запросу и посмотри результат
Буду сейчас смотреть еще раз. Что то странное с таком запросом:
Код:
Развернуть Свернуть Копировать
WHERE `check_status` = 0 ORDER BY `last_checked_time` ASC LIMIT 1
Если значения поля равно 0 то как то хаотично или с другого конца берет строку. Раньше все работало как положено.
А тип поля last_used_time случайно не строка?
Нет, datetime.
Демоданные добавьте, без них угадать что там в таблице в этом поле сложновато. Скорее всего сортировка по типу поля не дает результата, т.к. данные не позволяют это сделать.
Ну вот было все хорошо и что то поломалось.
Всегда можно добавить авто ID и сортировать по нему.
Нет, так не могу. Мне надо брать строку у которой поле last_used_time имеет меньшее значение.
99,99% что тип поля не timestamp, иначе откуда там 0
datetime.
 
Последнее редактирование:
Мистика какая то честное слово!
 
Вот более детальнее.
Запрос:
Код:
Развернуть Свернуть Копировать
SELECT id, proxy_address FROM proxies WHERE check_status = 0 ORDER BY last_checked_time ASC LIMIT 1

Структура таблицы:
upload_2019-3-17_10-14-31.png


Содержимое таблицы:
upload_2019-3-17_10-15-7.png


Результат запроса:

upload_2019-3-17_10-15-47.png


Мистика, друзья, не правда ли?
 
Мистика, друзья, не правда ли?
Это не мистика. Мускул крайне капризная БД, намучался я с ней и людей заебал.

А зачем берешь именно таким образом. Тебе нужно брать уник?
 
Ни чего не обновлялось? (MySQL или чего там) Если ранее работало, значит что то изменилось...
Да вроде бы нет. Правда не давно перенес все с 10ки на 2016.
А зачем берешь именно таким образом. Тебе нужно брать уник?
Мне надо брать из базы самый старый прокси по времени в поле last_checked_time или у которого значение в этом поле 0 (не проверялось ни разу). Прокси со значением 0 берутся в первую очередь. Прокси по кругу проверять.
 
Дак если там все значения 0000-00-00 00:00:00, то как мускулу понять что вы хотите получить именно "первую" строку... если все значения одинаковые, то формально для него нет разницы между "первой" и "последней" ... он сделал выборку всех строк удовлетворяющих условиям WHERE и дальше пытается их сортировать по дате, но они все одинаковые, а по другим признакам вы не сортируете ... в SQL вообще понятие "первая"-"последняя" очень условное, все зависит от запроса. Если же вы считаете "первой строкой" строку которая добавлена в таблицу раньше, то это необходимо явно указать

Напишите тогда ORDER BY last_checked_time, id LIMIT 1

в этом случае сортировка сначала будет идти по дате, а потом еще по id ... тогда будете гарантировано получать "первую" (добавленную в таблицу раньше) строку из набора даже при одинаковых датах
 
Последнее редактирование:
  • Спасибо
Реакции: one и zortexx
Дак если там все значения 0000-00-00 00:00:00, то как мускулу понять что вы хотите получить именно "первую" строку... если все значения одинаковые, то для него нет разницы между первой и последней ... он сделал выборку всех строк по условиям и дальше пытается их сортировать по дате, но они все одинаковые, а по другим признакам вы не сортируете ... в sql вообще понятие первая-последняя очень условное, все зависит от запроса.
Да, соглашусь, но блин ведь раньше работала такая конструкция. ) Возможно обновлял и MySQL и в текущей версии стало что то по другому.
Напишите тогда ORDER BY last_checked_time, id LIMIT 1
Попробую сейчас.
 
Да, сейчас все работает как надо, спасибо!
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)