我有桌子
**id name status date**
1 john 2 01.01.2010
2 mike 5 04.01.2010
3 john 2 06.01.2010
4 sam 1 08.01.2010
john状态2两次,我需要从这个表中选择john,mike,其中status = 2,但我需要显示最新记录。
我无法使用order by
我已将其用于其他内容。
答案 0 :(得分:1)
您可以将order by
用于以下多个条件:
ORDER BY date desc, status desc
答案 1 :(得分:1)
您需要使用相关的子查询,例如:
select *
from table t1
where t1.date = ( select max( t2.date )
from table t2
where t1.name = t2.name
and t1.status = t2.status )
答案 2 :(得分:1)
如果您不需要ID字段,查询会更快:
SELECT t.name, t.status, max(t.date) date
FROM table t
GROUP BY t.name, t.status
ORDER BY [whatever]
如果您需要ID,并且保证ID在较新日期的记录中较大,则可以将max(t.id) id
添加到字段列表中。
答案 3 :(得分:0)
SELECT *
FROM table t
WHERE status = 2
AND date = (SELECT MAX(date) FROM table tmp WHERE tmp.name = t.name GROUP BY name)