2012-12-05 120 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