当前位置:网站首页>MySQL 多表关联一对多查询实现取最新一条数据
MySQL 多表关联一对多查询实现取最新一条数据
2022-07-30 20:15:00 【m0_66557301】
场景:个人用户进行实名认证。一个人存在多个实名认证结果。期望获取到每个人最新一条实名认证结果 加 个人信息。
一、写出查询用户信息加实名认证得sql
SELECT
*
FROM
USERS u
LEFT JOIN USER_AUTH ua ON ua.userId = u.id
二、改造sql 可以获取到最新一条实名记录
方法一:
1、大致思路进行 left join得这张表提前 先分组筛选出 最新一条记录 。
SELECT
*
FROM
USERS u
LEFT JOIN ( SELECT MAX( id ) AS id, userId FROM USER_AUTH GROUP BY userId ) AS ua ON ua.userId = u.id
方法二:
先联表后,然后取出出第一个
SELECT
*
FROM
(
SELECT
u.id,
row_number() over ( PARTITION BY u.id ORDER BY u.id ) AS rowno
FROM
USERS u
LEFT JOIN USER_AUTH ua ON u.id = ua.userId
) tmp
WHERE
rowno = 1;
方法三:
SELECT
u.id
FROM
USERS u
LEFT JOIN USER_AUTH ua ON ua.id = (SELECT b.id FROM USER_AUTH b WHERE b.userId = u.id HAVING 1 ORDER BY b.id )
sql server 需要缓存下面写法
区别在于 子查询得order by 需要 使用 top
SELECT
u.id
FROM
USERS u
LEFT JOIN USER_AUTH ua ON ua.id = (SELECT top 1 b.id FROM USER_AUTH b WHERE b.userId = u.id ORDER BY b.id )
DataGrip 上诉方法 mysql 运行结果:

Navicat Premium 15 mysql 执行结果

Navicat Premium 15 SQL server 执行结果


emmmmm
sql 多次执行发现时间 都不稳定。 综合下来 方法一 得效率更好
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- DCM 中间件家族迎来新成员
- 啊?现在初级测试招聘都要求会自动化了?
- 推荐系统:实时性【特征实时性:客户端实时特征(秒级,实时)、流处理平台(分钟级,近实时)、分布式批处理平台(小时/天级,非实时)】【模型实时性:在线学习、增量更新、全量更新】
- Running the evict task with compensationTime
- 【回归预测-lssvm分类】基于最小二乘支持向量机lssvm实现数据分类代码
- 【考研词汇训练营】Day18 —— amount,max,consider,account,actual,eliminate,letter,significant,embarrass,collapse
- mysqldump导出提示:mysqldump [Warning] Using a password on the command line interface can be insecure
- 湖仓一体电商项目(四):项目数据种类与采集
- MySql密码
- flowable工作流所有业务概念
猜你喜欢
![[Node implements data encryption]](/img/8b/f9ff44c39fc9e80b2f2d2626a74076.png)
[Node implements data encryption]

多线程的互斥锁应用RAII机制

Zabbix部署与练习

Snowflake vs. Redshift的2022战报:两个数据平台谁更适合你?
![[PM only] Quickly count who else in the team has not registered and reported information, and quickly screen out the members of their own project team who have not completed the list of XXX work items](/img/74/94c254b7694a77d635f5f538a72fe0.png)
[PM only] Quickly count who else in the team has not registered and reported information, and quickly screen out the members of their own project team who have not completed the list of XXX work items

移动web开发01

Flink_CDC搭建及简单使用

用jOOQ 3.17投射类型安全的嵌套表记录

To the operation of the int variable assignment is atom?

MySql密码
随机推荐
OSS简单上传图片
Ordinary int main(){} does not write return 0; what will happen?
PPT如何开启演讲者模式?PPT开启演讲者模式的方法
Recommendation System - Sorting Layer: Sorting Layer Architecture [User and Item Feature Processing Steps]
Cesium loads offline maps and offline terrain
MySQL的 DDL和DML和DQL的基本语法
湖仓一体电商项目(四):项目数据种类与采集
网络安全实验环境搭建
Typora设置标题自动标号
Recommendation system-model: FNN model (FM+MLP=FNN)
树形结构:二叉树的递归非递归遍历、BST
【考研词汇训练营】Day18 —— amount,max,consider,account,actual,eliminate,letter,significant,embarrass,collapse
JUnit 5测试中的临时目录(附实例及代码)
【PM专用】快速统计团队还有谁没有登记上报信息,快速筛选出属于自己项目组的成员,未完成XXX工作事项的名单
银行数据资产转换能力弱?思迈特软件助力解决银行困境
【luogu P8031】Kućice(计算几何)
推荐系统:AB测试(AB Test)
普通的int main(){}没有写return 0;会怎么样?
SQLyog注释 添加 撤销 快捷键
啊?现在初级测试招聘都要求会自动化了?