SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.12.2008 17:29:51

funkylogic
Участник
Зарегистрирован: 08.12.2008
Сообщений: 2

MySQL трабл с групировкой по url и сортировкой по дате

Вот описание проблемы

Есть запрос вида

SELECT id,url,MAX(lastupdate)  as lu
FROM bookmark
WHERE id IN (73,75,121,127,128,129,130,131,134,135,137,138,139,140,141,142,143,145,149,208,209,210) AND privacy=1 AND spam=0
GROUP BY url
ORDER BY lu

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

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


В чём может быть табл?

У меня подозрение что Мускул как то не правильно работает с датами.

поле lastupdate имеет тип datetime.


Есть ли у кого какие соображения по этому поводу.

Спасибо!

Неактивен

 

#2 08.12.2008 17:43:02

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: MySQL трабл с групировкой по url и сортировкой по дате

Все должно быть корректно. Но не ждите, что id будет соответствовать дате с максимальной датой. id будет произвольный из группы. Чтобы узнать id, потребуется подзапрос. На форуме уже обсуждалось
http://sqlinfo.ru/forum/viewtopic.php?id=403
http://sqlinfo.ru/forum/viewtopic.php?id=448

Неактивен

 

#3 08.12.2008 18:30:20

funkylogic
Участник
Зарегистрирован: 08.12.2008
Сообщений: 2

Re: MySQL трабл с групировкой по url и сортировкой по дате

rgbeast написал:

Все должно быть корректно. Но не ждите, что id будет соответствовать дате с максимальной датой. id будет произвольный из группы. Чтобы узнать id, потребуется подзапрос. На форуме уже обсуждалось
http://sqlinfo.ru/forum/viewtopic.php?id=403
http://sqlinfo.ru/forum/viewtopic.php?id=448

Подошёл такой вариант

как вы считаете он правильный и не вызовет ли торомозов mysql?

SELECT b1.id,b1.url,b1.lastupdate

FROM bookmark as b1

JOIN  bookmark as b2 ON  b2.lastupdate = (SELECT lastupdate  FROM  ookmark WHERE url=b1.url  ORDER BY lastupdate DESC LIMIT 1)

WHERE b1.id IN (73,75,121,127,128,129,130,131,134,135,137,138,139,140,141,142,143,145,149,208,209,210) 

AND b1.lastupdate=b2.lastupdate

AND b1.privacy=1

AND b1.spam=0

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson