mysqlA表连接B表,并取B表中更新时间最新

场景一 要实现A表连接B表,并取B表中更新时间最新的那条记录,可以使用以下SQL查询:

方法一

python 复制代码
SELECT A.*, B.*
FROM A 
LEFT JOIN (
    SELECT *, 
           ROW_NUMBER() OVER (PARTITION BY b_foreign_key ORDER BY update_time DESC) AS rn
    FROM B
) B ON A.id = B.b_foreign_key AND B.rn = 1

方法二

bash 复制代码
SELECT A.*, B.*
FROM A
LEFT JOIN B ON A.id = B.b_foreign_key
INNER JOIN (
    SELECT b_foreign_key, MAX(update_time) as max_update_time
    FROM B
    GROUP BY b_foreign_key
) B_latest ON B.b_foreign_key = B_latest.b_foreign_key 
           AND B.update_time = B_latest.max_update_time

方法三:在大数据集上性能欠缺

bash 复制代码
SELECT A.*, B.*
FROM A
LEFT JOIN (
    SELECT *
    FROM B b1
    WHERE b1.update_time = (
        SELECT MAX(b2.update_time)
        FROM B b2
        WHERE b2.b_foreign_key = b1.b_foreign_key
    )
) B ON A.id = B.b_foreign_key

场景二 取版本号最大的一整条信息

方法一:使用max函数。注意:版本号不是简单的数字,而是像 "v1.2.3" 这样的字符串, 需要使用适当的字符串比较函数或者转换函数

bash 复制代码
SELECT *
FROM your_table
WHERE version = (
    SELECT MAX(version)
    FROM your_table
)
LIMIT 1

方法二:

bash 复制代码
SELECT *
FROM your_table
ORDER BY version DESC, update_time DESC
LIMIT 1
相关推荐
数据库小学妹7 分钟前
MySQL慢SQL优化实战指南:EXPLAIN分析+索引优化+8个真实案例
sql·mysql·mysql优化·数据库性能·索引优化
Database_Cool_24 分钟前
单库瓶颈解决方案首选:阿里云 PolarDB-X 平滑替代分库分表
数据库·阿里云
2503_9317124837 分钟前
10m/s超高速电梯:西奥XO-NEWIII如何树立行业速度标杆
java·大数据·数据库
无小道41 分钟前
Redis——redis和mysql的数据同步
数据库·redis·mysql
AI的探索之旅1 小时前
从 Ubuntu 14.04 到 24.04:TI AM335x 开发环境完整迁移与 Agent 接管方案
linux·数据库·嵌入式硬件·ubuntu·postgresql
MatrixOrigin1 小时前
MatrixOne Git4Data 技术详解(七)·数据运维实践篇:Write-Audit-Publish——给 ETL 流水线装一道发布门禁
sql·数据平台·ai-native·矩阵起源·git4data·matrixone
辰合软件1 小时前
通达OA目录结构与核心文件解析
android·数据库·oracle
名不经传的养虾人2 小时前
从0到1:企业级AI项目迭代日记 Vol.61|记忆不是越多越好,装一道门比装满更重要
数据库·人工智能·ai编程·ai工作流·企业ai
霸道流氓气质2 小时前
Harness Engineering 从理论到实战:基于 Spring AI Alibaba 的完整实现指南
数据库·人工智能·spring·harness
linuxoffer2 小时前
MYSQL回收碎片空间
数据库·mysql