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

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
Как так? По любому берутся значения из конца таблицы а надо с начала.

Что так.
Code:
ORDER BY last_used_time ASC LIMIT 1;
Что так.
Code:
ORDER BY last_used_time DESC LIMIT 1;
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,652
Points
113
last_used_time
а это поле часом не одинаковое во всех строках?
 
  • Thank you
Reactions: Lord_Alfred

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
так попробуй LIMIT 0,1
 

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
last_used_time
а это поле часом не одинаковое во всех строках?
Частично одинаковое, имеют значение 0.
так попробуй LIMIT 0,1
Тоже самое.
 

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
Ни кто не подскажет решения данного "феномена"?
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,652
Points
113
сделай полную выборку по этому запросу и посмотри результат
 

vrska

Client
Joined
Feb 7, 2010
Messages
590
Reaction score
412
Points
63
А тип поля last_used_time случайно не строка?
 

specialist

Client
Joined
Dec 28, 2018
Messages
734
Reaction score
343
Points
63
Ни кто не подскажет решения данного "феномена"?
Демоданные добавьте, без них угадать что там в таблице в этом поле сложновато. Скорее всего сортировка по типу поля не дает результата, т.к. данные не позволяют это сделать.
Всегда можно добавить авто ID и сортировать по нему.
 

vrska

Client
Joined
Feb 7, 2010
Messages
590
Reaction score
412
Points
63
99,99% что тип поля не timestamp, иначе откуда там 0
 

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
сделай полную выборку по этому запросу и посмотри результат
Буду сейчас смотреть еще раз. Что то странное с таком запросом:
Code:
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.
 
Last edited:

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
Мистика какая то честное слово!
 

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
Вот более детальнее.
Запрос:
Code:
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


Мистика, друзья, не правда ли?
 

TopSerf

Client
Joined
Feb 12, 2017
Messages
1,511
Reaction score
233
Points
63
Мистика, друзья, не правда ли?
Ни чего не обновлялось? (MySQL или чего там) Если ранее работало, значит что то изменилось...
 

Mikhail B.

Client
Joined
Dec 23, 2014
Messages
14,449
Reaction score
5,477
Points
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с Mikhail B. какие-либо сделки.

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

А зачем берешь именно таким образом. Тебе нужно брать уник?
 

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
Ни чего не обновлялось? (MySQL или чего там) Если ранее работало, значит что то изменилось...
Да вроде бы нет. Правда не давно перенес все с 10ки на 2016.
А зачем берешь именно таким образом. Тебе нужно брать уник?
Мне надо брать из базы самый старый прокси по времени в поле last_checked_time или у которого значение в этом поле 0 (не проверялось ни разу). Прокси со значением 0 берутся в первую очередь. Прокси по кругу проверять.
 

WebBot

Client
Joined
Apr 4, 2015
Messages
1,825
Reaction score
1,414
Points
113
Дак если там все значения 0000-00-00 00:00:00, то как мускулу понять что вы хотите получить именно "первую" строку... если все значения одинаковые, то формально для него нет разницы между "первой" и "последней" ... он сделал выборку всех строк удовлетворяющих условиям WHERE и дальше пытается их сортировать по дате, но они все одинаковые, а по другим признакам вы не сортируете ... в SQL вообще понятие "первая"-"последняя" очень условное, все зависит от запроса. Если же вы считаете "первой строкой" строку которая добавлена в таблицу раньше, то это необходимо явно указать

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

в этом случае сортировка сначала будет идти по дате, а потом еще по id ... тогда будете гарантировано получать "первую" (добавленную в таблицу раньше) строку из набора даже при одинаковых датах
 
Last edited:
  • Thank you
Reactions: one and zortexx

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
Дак если там все значения 0000-00-00 00:00:00, то как мускулу понять что вы хотите получить именно "первую" строку... если все значения одинаковые, то для него нет разницы между первой и последней ... он сделал выборку всех строк по условиям и дальше пытается их сортировать по дате, но они все одинаковые, а по другим признакам вы не сортируете ... в sql вообще понятие первая-последняя очень условное, все зависит от запроса.
Да, соглашусь, но блин ведь раньше работала такая конструкция. ) Возможно обновлял и MySQL и в текущей версии стало что то по другому.
Напишите тогда ORDER BY last_checked_time, id LIMIT 1
Попробую сейчас.
 

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
Да, сейчас все работает как надо, спасибо!
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)