0

我总是只需要结果集中最近 10 年的数据。这些年总会有多个记录,所以我不能只提取前 10 条记录。我怎样才能:选择集 1,选择集 2... 到集 10,并且只显示这 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
4

3 回答 3

0

你可以这样做:

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

这个查询可以这样解释:

  1. 内部查询 - 选择过去 10 年table
  2. 外部查询 - 选择table内部查询结果中年份的所有列
于 2012-12-05T18:25:29.867 回答
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

然后你选择那些年份的每条记录

于 2012-12-05T18:27:38.570 回答
0
select * from t 
where
(year>(select max(year) from t)-10)
order by year desc, quarter desc
于 2012-12-05T19:11:02.203 回答