php - MySQL子查询,获取2个最近的类型行

标签 php mysql subquery

我正在尝试获取每种类型的最新两行。

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's: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);

如何解决?

最佳答案

你可以试试这个。

   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

关于php - MySQL子查询,获取2个最近的类型行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44949762/

相关文章:

PHP 分页查询失败

php - 为什么使用 instanceof 调用会花费这么多时间?

php - 带有 "use"关键字的可选命名空间

java - 每月更新一条数据库记录

php/mysql - 计数和分组

SQL - 聚合函数中的子查询

MySQL Grouping 使用 group_concat 然后 Group BY

php - 在我的机器上 localhost 与 mysql 的 127.0.0.1 不同

php - 我应该在哪里存储项目的一些参数?

MYSQL:根据日期仅返回每组的最新记录