2011-08-19 109 views
0

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我用它已經別的東西。

+0

你必須使用'爲了by'你想要的東西。幸運的是,您可以使用'order by'來獲取多於一列的數據。 – Mischa

回答

1

可以使用order by多個標準是這樣的:

ORDER BY date desc, status desc 
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) 
0
SELECT * 
FROM table t 
WHERE status = 2 
AND date = (SELECT MAX(date) FROM table tmp WHERE tmp.name = t.name GROUP BY name) 
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到字段列表。

相關問題