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