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