当前位置:首页 > 技术教程 > 数据库 > MySQL实用sql语句之连表查询用户基本信息及用户最近一条登录信息

MySQL实用sql语句之连表查询用户基本信息及用户最近一条登录信息

admin2022-07-11 22:45:46数据库4150

背景及需求:

    项目现有两张表:一张用户表,表名:users;一张用户登录信息表,表名:user_login_log表。需求是:查询用户的基本信息及用户最近一条登录信息的列表数据。


数据表结构:

  • users表结构:

CREATE TABLE `users` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增无符号主键',
  `username` varchar(50) NOT NULL DEFAULT '' COMMENT '用户名',
  `created_at` datetime NOT NULL COMMENT '创建时间',
  `updated_at` datetime NOT NULL COMMENT '最近一次更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户数据表';
  • users表数据:

2.png

  • user_login_log表结构:

CREATE TABLE `user_login_log` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增无符号主键',
  `user_id` bigint(20) unsigned NOT NULL COMMENT '用户ID',
  `login_ip` varchar(50) NOT NULL DEFAULT '' COMMENT '登录IP',
  `created_at` datetime NOT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户登录数据表';
  • user_login_log表数据:

3.png

连表查询用户基本信息及用户最近一条登录信息:

-- 1条sql语句连表查询用户基本信息及用户最近一条登录信息
select a.id, a.username, a.created_at, a.updated_at, b.login_ip 
from users as a left join (
  select d.user_id, d.login_ip from (
    select max(id) as id from user_login_log group by user_id
  ) as c left join user_login_log as d on d.id = c.id
) as b on b.user_id = a.id
order by a.id desc;


查询结果:

 

4.png

扫描二维码推送至手机访问。

版权声明:本文由1688资源网发布,如需转载请注明出处。

本文链接:https://1688ziyuan.com/article/62.html

标签: mysqlsql语句
分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。