php - MySQL怎样查询所有用户最新的一条信息?
PHP中文网
PHP中文网 2017-04-11 09:09:54
[PHP讨论组]

想到用group by 但它只能显示第一条,而不能显示最新一条,
想加个order by time desc,可是orber by只能加在group by后面。

有什么办法可以查询出group by的分组中,每组内的排序中最大或最小的一行数据?

PHP中文网
PHP中文网

认证0级讲师

全部回复(6)
迷茫

方案一: 通过同表子查询或联查找到最大的数据ID

select * from track where id in(select max(id)  from track group by target_id);

or

select * from track where id in(select substring_index(group_concat(id order by id desc),',',1) as maxid from track group by target_id);

方案二:分两步查询,php中先查询最大ID,再通过ID数组查询列表数据

高洛峰

select a.* from(select max(id) as id from info group by userid) b left join info a on a.id=b.id

怪我咯

把查询结果存起来,再取

天蓬老师

使用order by

怪我咯
select * from ( 
    select (@mycnt := @mycnt + 1) as ROWNUM,name,age
    from tb where AGe < 20 order by name,age 
) as A where ROWNUM = 1

只懂SqlServer,这个是仿照SqlServer写法的,可以试试

PHPz
SELECT a.id, a.user_id, a.info, a.create_time
    FROM (SELECT id, user_id, info, create_time FROM tbl_user 
        ORDER BY user_id, create_time DESC, id DESC) a
    GROUP BY a.user_id
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号