当前位置:网站首页>多表查询最值
多表查询最值
2022-08-03 17:01:00 【欧菲斯集团】
多表查询取最值是一个很常见的场景,我用一个类似的场景来重现这个问题:
查询各个用户最近一次登录时间(使用的MySQL)
这里给定两个表,t_user用户表以及t_login_log登录日志表,结构如下
CREATE TABLE `t_user` (
`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `t_user` VALUES ('1', '张三');
INSERT INTO `t_user` VALUES ('2', '李四');
INSERT INTO `t_user` VALUES ('3', '王五');CREATE TABLE `t_login_log` (
`id` int(11) NOT NULL,
`user_id` int(11) DEFAULT NULL,
`login_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of t_login_log
-- ----------------------------
INSERT INTO `t_login_log` VALUES ('1', '1', '2020-08-23 14:26:26');
INSERT INTO `t_login_log` VALUES ('2', '1', '2020-09-26 14:26:58');
INSERT INTO `t_login_log` VALUES ('3', '1', '2020-09-23 15:50:47');
INSERT INTO `t_login_log` VALUES ('4', '1', '2020-09-23 15:50:48');
INSERT INTO `t_login_log` VALUES ('5', '1', '2020-09-04 15:51:02');
INSERT INTO `t_login_log` VALUES ('6', '1', '2020-10-01 15:51:11');
INSERT INTO `t_login_log` VALUES ('7', '2', '2020-09-01 15:51:22');
INSERT INTO `t_login_log` VALUES ('8', '2', '2020-09-12 15:51:28');
INSERT INTO `t_login_log` VALUES ('9', '2', '2020-10-01 15:51:35');
INSERT INTO `t_login_log` VALUES ('10', '2', '2020-09-18 15:51:42');当然,肯定是以t_user表为主表,t_login_log为从表,这里直接贴出sql
查询各个用户最近一次登录时间:
SELECT
t1.id,
t1. NAME,
t2.login_time
FROM
t_user AS t1
LEFT JOIN t_login_log AS t2 ON t1.id = t2.user_id
WHERE
NOT EXISTS (
SELECT
1
FROM
t_login_log AS t3
WHERE
t2.user_id = t3.user_id
AND t2.login_time < t3.login_time
)查询结果如下:

这个sql其实也非常的简单,最关键的就是WHERE NOT EXISTS的处理,也就是一个子查询,之前写过一篇博客也是类似的场景,可以翻阅一下,这里就不赘述了。
传送门:SQL分组查询最值 SQL分组查询最值_大锅睿的博客-CSDN博客
边栏推荐
- TiKV & TiFlash 加速复杂业务查询丨TiFlash 应用实践
- 为什么我用了Redis之后,系统的性能却没有提升
- security加密解密
- 使用deepstream消息发送功能的时候,检测框没有检测标签,No text labels of bboxes displayed with osd for deepstream-test5
- ORACLE CLOUD 在国内有数据中心吗?
- [Unity Starter Plan] Making RubyAdventure01 - Player Creation & Movement
- 大型企业数据治理的现状和解决方案有哪些参考?_光点科技
- EasyExcel实现动态列解析和存表
- The strongest distributed lock tool: Redisson
- Big guys.Use flink-cdc-sqlserver version 2.2.0 to read sqlserver2008R
猜你喜欢
随机推荐
《社会企业开展应聘文职人员培训规范》团体标准在新华书店上架
SQL中对 datetime 类型操作
After using Stream for many years, does collect still have these "saucy operations"?
纯纯粹粹纯纯粹粹
TypeScript文件的编译执行
出海,是泡泡玛特的“解药”吗?
C专家编程 第2章 这不是Bug,而是语言特性 2.4 少做之过
Looking at the ecological potential of Hongmeng OS from the evolution of MatePad Pro
Huawei, Lenovo, BAIC, etc. were selected as the first batch of training bases for "Enterprise Digital Transformation and Security Capability Improvement" by the Ministry of Industry and Information Te
【LeetCode】899. 有序队列
sphinx error connection to 127.0.0.1:9312 failed (errno=0, msg=)
protobuf 反射使用总结
leetcode:202. 快乐数
最强分布式锁工具:Redisson
deepstresam的插件配置说明,通过配置osd,设置字体的背景为透明
TypeScript的配置文件tsconfig.json
浅谈Service&nbsp;Mesh对业务系统的价值
C# 构造函数如人之影子
【数据库数据恢复】SqlServer数据库无法读取的数据恢复案例
使用uniapp 封装一个request 请求









