2016-08-16 161 views
0

我對Mysql的返回結果的形式與兩列的選擇SQL查詢選擇:從選擇結果

number date 
1  date1 
1  date2 
2  date3 
. 
. 

你如何我從選擇查詢選擇,只保留最近的日期爲每個數字。

我在處理查詢結果時遇到問題。

+1

@ e4c5當你這樣做時,你不能保證獲得最新的結果,你只會顯示一個結果總數爲 – gabe3886

+1

@ e4c5,沒有'DESC'? – jarlh

+3

今天提示:做一個GROUP BY,使用MAX()來獲取每個號碼的最新日期。 – jarlh

回答

3

您可以將您的查詢用作派生表。既然你沒有提供查詢,讓我們用這個例子:

SELECT Name, Date 
FROM YourQuery 

現在採取MAX(Date)GROUP BY Name與您的查詢的派生表:

SELECT MAX(Date), Name 
FROM (
    SELECT Name, Date 
    FROM YourQuery 
    ) a 
GROUP BY Name 
+1

因爲他說這些結果是查詢的結果...因爲我們看不到查詢,我假設它不是從單個表中直接拉。 –

+0

對不起,我沒有仔細閱讀!派生表是要走的路! – jarlh

0

如果你只是想顯示的號碼和日期,你可以通過做一個常規組返回的選擇,它應該做的伎倆:

select 
    a.number, 
    max(a.date) from 
(select number, date from table_name) a 
group by a.number 

如果您有其他列,你想顯示該行與最近的日期,這應該做的伎倆:

select 
    a.number, 
    a.lastentrytime, 
    b.some_other_column 
from (
     select number, 
     max(date) recent_date 
from table_name group by number) a 
inner join table_name b on a.number= b.number and a.recent_date= b.date 
0
;with cte as ( 
select number, row_number() over(order by date desc) as rn from thistable) 
select number from cte where rn=1 

您可以使用此查詢來獲取最新記錄。