mysql - 如何使用分组名称获取 SQL 搜索的最后记录
问题描述
我有这张桌子:
+----+--------+-------------------+------------+
| id | name | mac | disk_usage |
+----+--------+-------------------+------------+
| 1 | simon | 00::00:00:00:01 | 10 |
| 2 | monica | 00::00:00:00:02 | 10 |
| 3 | andrew | 00::00:00:00:03 | 10 |
| 4 | amon | 00::00:00:00:04 | 10 |
| 5 | peter | 00::00:00:00:05 | 10 |
| 6 | rusty | 00::00:00:00:06 | 10 |
| 7 | simon | 00::00:00:00:01 | 22 |
| 8 | amon | 00::00:00:00:04 | 15 |
| 9 | monica | 00::00:00:00:02 | 18 |
| 10 | simon | 00::00:00:00:01 | 2 |
+----+--------+-------------------+------------+
当我输入搜索词“mon”时,我想要这个结果:
+----+--------+-------------------+------------+
| id | name | mac | disk_usage |
+----+--------+-------------------+------------+
| 8 | amon | 00::00:00:00:04 | 15 |
| 9 | monica | 00::00:00:00:02 | 18 |
| 10 | simon | 00::00:00:00:01 | 2 |
+----+--------+-------------------+------------+
我正在使用这个 SQL 命令:
SELECT * FROM (SELECT test.* FROM test WHERE name LIKE "%mon%" ORDER BY id DESC)test GROUP BY name ORDER BY id DESC;
但我明白了:
+----+--------+-------------------+------------+
| id | name | mac | disk_usage |
+----+--------+-------------------+------------+
| 4 | amon | 00::00:00:00:04 | 10 |
| 2 | monica | 00::00:00:00:02 | 10 |
| 1 | simon | 00::00:00:00:01 | 10 |
+----+--------+-------------------+------------+
有人可以帮我解决这个问题吗?
解决方案
通过 id使用聚合函数max()
,然后基于ID
.
select * from test t
inner join
(select max(id) id, name
from test
where name like '%mon%'
group by name) t1 on t1.id = t.id
order by t.id asc
推荐阅读
- c# - # 后打开带有参数的本地 html 文件
- php - Laravel 不在代码文件夹中创建项目
- c# - 时间:2019-05-10 标签:c#specific sequence keypress event anywhere in form
- javascript - 如何在 javascript 中使用列表 2 次
- html - 文章中图像下方的中心标题 CSS HTML
- shopify - 部分如何链接到 .liquid 文件?
- c - 读取系统调用:当输入的字节数超过计数参数时,多余的字节溢出到 shell 并作为下一个命令执行
- python - 没有从编码问题中得到正确的输出
- javascript - 超级方法示例
- python - Apache Beam:在 CombineFn 中访问 WindowParam