mysql - 如何通过通配符获取前n条记录组

标签 mysql sql

这是我的表格示例:

+--------+-------------+
| id     | city_detail |
+--------+-------------+
| 1      | 12_hyd_test |
| 2      | 13_blr_test |
| 3      | 15_blr_test |
| 4      | 18_hyd_test |
| 5      | 17_coi_test |
| 6      | 22_coi_test |
| 7      | 62_hyd_test |
| 8      | 72_blr_test |
| 9      | 92_blr_test |
| 10     | 42_hyd_test |
| 11     | 21_coi_test |
| 12     | 82_coi_test |
+--------+-------+-----+

从此表中,如何使用类似条件和分组依据来进行选择

+--------+-------------+
| id     | city_detail |
+--------+-------------+
| 12     | 82_coi_test |
| 11     | 21_coi_test |
| 10     | 42_hyd_test |
| 7      | 62_hyd_test |
| 9      | 92_blr_test |
| 8      | 72_blr_test |
+--------+-------+-----+

在每个城市仅显示两个结果(%coi%%hyd% 或 '%blr%'),按 id 排序DESC

最佳答案

可能最简单的方法是使用变量:

select e.*
from (select e.*,
             (@rn := if(@c = substr(city_detail, 4), @rn + 1,
                        if(@c := substr(city_detail, 4), 1, 1
                       )
             ) as seqnum
      from example e cross join
           (select @c := '', @rn := 0) params
      order by substr(city_detail, 4)
     ) e
where rn <= 2;

关于mysql - 如何通过通配符获取前n条记录组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38222356/

相关文章:

php - MySQL 函数在 "php:7.1"docker 镜像中不可用

mysql - 选择有限制,但也限制列可以具有特定值的次数

python - 尝试在试用 django 项目中下载 mysql 时出错

mysql - 如何在MySQL中存储空间文件

MySQL 错误 : Access denied for user root@localhost

Java Sql 从列中选择月份

php - PostgreSQL 错误 : date/time field value out of range

sql - Sequelize.js 中的 belongsTo 与 hasMany

sql - sql递归语句如何工作?

php - 从循环php将一行插入mysql