2017-07-06 68 views
0

我試圖獲取每種類型的兩個最新行。MySQL子查詢,獲取2個最近的類型行

ID TYPE SCORE 
----------------- 
1 EUR  2 
2 EUR  3 
3 CAD  5 
4 CAD  6 
5 CAD  7 
6 CAD  8 
7 USD  5 
8 USD  3 
9 USD  7 
10 USD  2 

返回的結果應該是id:1,2,5,6,9,10。

我該如何完成mysql子查詢?我試圖下面..

$sql = "SELECT * FROM `data_analysis_child` 
     WHERE type IN 
    (SELECT type FROM `data_analysis_child` ORDER by id DESC LIMIT 2)"; 

$query = $this->db->query($sql); 

我該如何解決?

+0

不需要子查詢....子查詢本身做你的工作 – Rams

+0

@rams你誤解了這個問題。 OP希望最後2個_per_TYPE。所以,6項:EUR 1,2,CAS 5,6,USD 9,10 –

+0

是的,現在我得到了問題,並給出了答案 – Rams

回答

0

你可以試試這個。

select * from 
(SELECT t.*,@row_num := IF(@TYPE1=type,@row_num+1,1)AS RowNumber,@TYPE1=type FROM data_analysis_child t, (SELECT @row_num := 1) x,(SELECT @TYPE1 := '') y 
order by type desc,id desc) where RowNumber<=2 
+0

這隻得到兩個最近的行。我想爲每個'類型'兩個最近的行.. – mdnba50

+0

對不起,我誤解了,現在我改變了我的答案PLZ試試 – Rams