2016-08-16 158 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 

您可以使用此查询来获取最新记录。