Элементарный запрос но данные не те

rudik

Developer
Элементарный запрос но данные не те

Есть таблица:
id; user; date; timelimit;
1 ; test ; 2003-01-01 ; 200
2 ; test ; 2003-02-01 ; 500

Необходимо получить самую последнюю дату и timelimit
соответствующий ей (находящийся в ее рядке).

SELECT MAX(date), timelimit FROM table GROUP BY user

Возвращает :

+------------+---------+
| MAX (date) | timelimit |
+------------+---------+
| 2003-02-01 | 200
+------------+---------+

Дату ту что надо, а вот timelimit - первый попавшийся.

Варианты типа сортируй по дате и делай LIMIT 0,1 не проходят.
 

Crazy

Developer
Работает именно так, как ты попросил: максимальная дата и первый попавшийся timelimit. IMHO, MSSQL вообще отказался бы исполнять такой запрос.

То, что ты хочешь, делается в два запроса.
 

Alkinoy

Guest
SELECT date, timelimit FROM table WHERE date IN (SELECT MAX(date) FROM table)
 

chira

Новичок
можно использовать если таблица не большая
select b.date,b.timelimit
from table a , table b
WHERE a.user=b.user
group by a.user , b.id
having b.date = max(a.date)

если таблица большая , то нужно в два запроса
CREATE TEMPORARY TABLE ttt
TYPE=HEAP
SELECT user, MAX(`date`) max_date FROM table GROUP BY 1

SELECT t1.*
FROM table t1, ttt
WHERE t1.user = ttt.user AND ti.date = ttt.max_date
 

Demiurg

Guest
>Варианты типа сортируй по дате и делай LIMIT 0,1 не проходят.
почему ?
 
Сверху