mysql重复查询最新一条数据三种方法

本文介绍了如何使用SQL查询从数据库中选取每个用户最新的数据记录。通过NOTEXISTS子句、子查询以及关联查询的三种方法,确保获取到的是每个用户update_time字段最大值对应的完整记录。这些技巧对于数据处理和分析至关重要,特别是在处理大量用户数据时。
摘要由CSDN通过智能技术生成

 // id相同,update_time不同,取update_time最后一条

1. 使用 NOT EXISTS参数

SELECT id, user_id,image_url FROM file a WHERE NOT EXISTS (SELECT 1 FROM file where a.user_id = user_id AND a.update_time < update_time)

2. 使用子查询

SELECT id, user_id,image_url,update_time FROM file WHERE create_time IN (SELECT max(update_time) FROM file group by user_id) 

查询结果: 

3、关联查询
-- mysql 5.7.5 及以上版本
select user_id,update_time,id, image_url from (SELECT
    ANY_VALUE(t1.id) as id,
    t1.user_id,
    ANY_VALUE(t1.update_time) as update_time,    
    ANY_VALUE(t1.image_url) as image_url
FROM
    file t1
    INNER JOIN ( SELECT t2.user_id, max( t2.update_time ) AS update_time FROM file t2 where t2.`status` = 1 GROUP BY t2.USER_ID ) AS t3 
    ON t1.user_id = t3.USER_ID AND t1.update_time = t3.update_time    
    GROUP BY t1.user_id ) ss order by update_time desc
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值