2015-07-04 68 views
2

我試圖讓下面的表格如何在sql中獲得不同的結果?

id | name | created_on 
1 | xyz | 2015-07-04 09:45:14 
1 | xyz | 2015-07-04 10:40:59 
2 | abc | 2015-07-05 10:40:59 

的不同結果,我想不同的ID與最新created_on手段以下結果

1 | xyz | 2015-07-04 10:40:59 
2 | abc | 2015-07-05 10:40:59 

如何獲得上述由SQL查詢結果?

回答

4

試試這個:

Select id, name, max(created_on) as created_on from table group by id 
+0

Thanks.Superb !!!!!! – Ace

+0

歡迎您:)如果有用,請接受答案:) –

1

嘗試:

select id,max(name), max(created_on) from table_name group by id 

附加說明:

當它出現時,你的表是不是標準化。也就是說,您在此表中存儲name以及id。所以,你可以同時擁有這兩行:

id | name | created_on 
    1 | a | 12-12-12 
    1 | b | 11-11-11 

如果狀態不是邏輯模型中的可能,您應該通過拆分該表分成兩個獨立的表重新設計你的數據庫;一個拿着id-name關係,而另一個持有id-created_on關係:

table_1 (id,name) 
table_2 (id,created_on) 

現在,讓每個ID最後created_on:

select id,max(created_on) from table_2 

,如果你想查詢持有name

select t1.id, t1.name, t2.created_on from table_1 as t1 inner join 
(select id, max(created_on) as created_on from table_2) as t2 
on t1.id=t2.id 
0

假設ID /名稱始終是一對:

select id, name, max(created_on) 
from table 
group by id, name; 

將兩者都包含在group by中更安全。當它不是唯一的表格時,我也發現它命名爲id這一列是誤導性的。

0

您可以使用關鍵字DISTINCT

SELECT DISTINCT 
相關問題