选择所有最新的记录

G-R*_*dra 2 mysql group-by

我有这样的表结构

  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)

有可能的 ?

Sha*_*ngh 6

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是你的表名.


Car*_*mDC 5

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)