2016-05-23 22 views
1

我有一個數據集工作與類似的格式如下:查找日期的最新紀錄爲每個不同的列值

Table: Account 
*-----------*----------*-------------* 
|  id | amount | date  | 
*-----------*----------*-------------* 
|  1 | 100 | 01/01/2016 | 
|  2 | 100 | 01/02/2016 | 
|  3 | 100 | 01/03/2016 | 
|  4 | 200 | 01/04/2016 | 
|  5 | 200 | 01/05/2016 | 
|  6 | 200 | 01/06/2016 | 
|  7 | 300 | 01/07/2016 | 
|  8 | 300 | 01/08/2016 | 
|  9 | 300 | 01/09/2016 | 
|  10 | 400 | 01/10/2016 | 
*-----------*----------*-------------* 

我需要一個查詢,以返回返回最近的戰績爲每個不同的值在桌子裏。因此,上表將返回

*-----------*----------*-------------* 
|  id | amount | date  | 
*-----------*----------*-------------* 
|  3 | 100 | 01/03/2016 | 
|  6 | 200 | 01/06/2016 | 
|  9 | 300 | 01/09/2016 | 
|  10 | 400 | 01/10/2016 | 
*-----------*----------*-------------* 

我還是新的子查詢,但我嘗試以下

SELECT a.id, a.amount, a.date FROM account a WHERE a.date IN (SELECT MAX(date) FROM account) 

然而,這只是返回的最後日期。如何獲取金額欄中每個不同值的最新日期。

回答

2

如果你只需要量:

SELECT amount, MAX(date) from myTable group by amount 

如果您需要更多的數據:

SELECT * from myTable where (amount, date) IN (
    SELECT amount, MAX(date) as date from table group by amount 
) 

或者,也許這會跑得更快:

SELECT * from myTable A WHERE NOT EXISTS (
    SELECT 1 
    FROM myTable B 
    WHERE A.date < B.date 
     AND A.amount = B.amount 
) 
相關問題