学习路之数据库---MySQL数据库中如何查询分组后每组中的最后一条记录?

/* 最后一条记录的时间*/
SELECT MAX(created_at) ,yundian_id FROM yundian_message ym group by yundian_id;

/* 云店分组*/
SELECT yundian_id FROM yundian_message ym group by yundian_id;

/* MySQL数据库中如何查询分组后每组中的最后一条记录?*/
SELECT id, name, other_columns
FROM messages
WHERE id IN (
    SELECT MAX(id)
    FROM messages
    GROUP BY name
);

//提供了云店最新评论的数据
            $sql = "SELECT a.*,ym.msg_content FROM yundian_info a left join
            (select yundian_id,msg_content from yundian_message WHERE  id IN (
                SELECT MAX(id) FROM yundian_message ym group by yundian_id
            )) ym on a.id =ym.yundian_id WHERE yunyu_id={$yunyu_id} and state =0 ";

 

问题描述
比如,在MySQL数据库中,有数据表messages和数据记录,如下:

Id   Name   Other_Columns
-------------------------
1    A       A_data_1
2    A       A_data_2
3    A       A_data_3
4    B       B_data_1
5    B       B_data_2
6    C       C_data_1
如果执行MySQL分组查询语句,如下:

select * from messages group by name
则会返回所有按name分组的第一条数据,如下:

1    A       A_data_1
4    B       B_data_1
6    C       C_data_1
那么,如何查询按name分组后返回每组最后一条数据的MySQL语句呢,返回的结果如下:

3    A       A_data_3
5    B       B_data_2
6    C       C_data_1
 

解决方案
使用MySQL的IN(...)子句,如下:

SELECT id, name, other_columns
FROM messages
WHERE id IN (
    SELECT MAX(id)
    FROM messages
    GROUP BY name

参考:https://blog.csdn.net/qq_39940205/article/details/87778061?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值