Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Вот описание проблемы
Есть запрос вида
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.
Есть ли у кого какие соображения по этому поводу.
Спасибо!
Неактивен
Все должно быть корректно. Но не ждите, что id будет соответствовать дате с максимальной датой. id будет произвольный из группы. Чтобы узнать id, потребуется подзапрос. На форуме уже обсуждалось
http://sqlinfo.ru/forum/viewtopic.php?id=403
http://sqlinfo.ru/forum/viewtopic.php?id=448
Неактивен
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
Неактивен
Страниц: 1