2我有表选择最新的记录,如果列具有相同
**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
约翰状态2两次,我需要从该表中选择约翰·麦克,其中状态= 2,但我需要显示的最新记录。 我不能使用order by
我用它已经别的东西。
2我有表选择最新的记录,如果列具有相同
**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
约翰状态2两次,我需要从该表中选择约翰·麦克,其中状态= 2,但我需要显示的最新记录。 我不能使用order by
我用它已经别的东西。
可以使用order by
多个标准是这样的:
ORDER BY date desc, status desc
您需要使用相关子查询像这样:
select *
from table t1
where t1.date = (select max(t2.date)
from table t2
where t1.name = t2.name
and t1.status = t2.status)
SELECT *
FROM table t
WHERE status = 2
AND date = (SELECT MAX(date) FROM table tmp WHERE tmp.name = t.name GROUP BY name)
查询会去得更快,如果你并不需要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
到字段列表。
你必须使用'为了by'你想要的东西。幸运的是,您可以使用'order by'来获取多于一列的数据。 – Mischa