2012-12-05 113 views
0

我总是只需要结果集中最近10年的数据。这些年份总会有多条记录,所以我不能只提取前10条记录。我怎样才能:选择设置1,选择设置2 ...通过设置10,只显示那些10年的数据,而不会拉前几年?SQL选择集合/结果的年数1-10结果集

Year Quarter Quarterly_yield 
2012 1   8.41 
2012 2  -0.71 
2011 3   0.03 
2011 4   3.43 
2010 1   8.41 
2010 2  -0.71 
2009 3   0.03 
2009 4   3.43 
2008 1   8.41 
2008 2  -0.71 
2007 3   0.03 
2007 4   3.43 
2006 1   8.41 
2006 2  -0.71 
2005 3   0.03 
2005 4   3.43 
2004 1   8.41 
2004 2  -0.71 
2003 3   0.03 
2003 4   3.43 
2002 1   8.41 
2002 2  -0.71 
2001 3   0.03 
2001 4   3.43 
2000 1   8.41 
2000 2  -0.71 
+0

什么是你正在运行的SQL查询中的每个记录?在例子中为 – Benjam

回答

0

您可以在此做这样:

SELECT * FROM table WHERE year IN 
        (SELECT year FROM table ORDER BY year DESC LIMIT 10); 

这种查询可以这样解释:

  1. 内部查询 - 选择过去10年中从table
  2. 外部查询 - 选择来自table的所有列,其中内部查询结果中的年份为
+0

,你可以看到它不是最近10年。它可能在20年内。 – Marc

+0

@Marc你是对的,我误解了这个问题并编辑了我的答案... – evilone

+0

我一开始想到你的问题,但后来我意识到问题是“最近10年”而不是“10年前” – Marc

0

如何

SELECT * 
FROM table 
WHERE year IN 
    (
    SELECT year 
    FROM table 
    ORDER BY Year DESC 
    LIMIT 10 
) 

这将选择最近的10年

SELECT year 
FROM table 
ORDER BY Year DESC 
LIMIT 10 

然后选择那些年

0
select * from t 
where 
(year>(select max(year) from t)-10) 
order by year desc, quarter desc