我有这样的表结构
sn | person_id | image_name |
1 | 1 | abc1.jpb
2 | 1 | aa11.jpg
3 | 11 | dsv.jpg
4 | 11 | dssd.jpg
5 | 11 | sdf.jpg
Run Code Online (Sandbox Code Playgroud)
我需要不同的person_id最新行如下
2 | 1 | aa11.jjpb
5 | 11 | sdf.jpg
Run Code Online (Sandbox Code Playgroud)
有可能的 ?
SELECT * FROM table GROUP BY person_id HAVING MAX(sn)
Run Code Online (Sandbox Code Playgroud)
编辑
SELECT f.*
FROM (
SELECT person_id, MAX(sn) as maxval
FROM table GROUP BY person_id
) AS x INNER JOIN table AS f
ON f.person_id = x.person_id AND f.sn = x.maxval;
Run Code Online (Sandbox Code Playgroud)
table是你的表名.
SELECT * FROM yourtable GROUP BY person_id ORDER BY sn DESC
Run Code Online (Sandbox Code Playgroud)
本质上,您想从表中选择所有记录。然后按person_id分组(将结果限制为每人id 1个)...按SN递减顺序进行排序意味着它将返回最新(最高)的sn
更新:(并已验证)
SELECT * FROM (SELECT * FROM stackoverflow ORDER BY sn DESC) a GROUP BY person_id ORDER BY sn
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3368 次 |
| 最近记录: |