MySQL集|每日一题:使用 SQL,操作用户相关数据

198 阅读1分钟

用户表(user)

列名注释
id自增主键
username登录名
password密码
mobile手机号
realname姓名
role_id角色ID
parent_id主管ID
company_id公司ID
create_time创建时间
update_time更新时间
deleted0:有效 1:无效

角色表(role)

列名注释
id自增主键
role_code角色代码
role_name角色名称
description角色描述
create_time创建时间
update_time更新时间

公司表(company)

列名注释
id自增主键
company_name公司名称
telephone公司电话
contact销售公司产品部联系人
contact_tel产品部联系人电话
address销售公司地址
zipcode销售公司邮编
create_time创建时间
update_time更新时间

说明: 入职时会创建用户记录,每个用户都有对应的公司,角色,以及对应的上司,最高上司的主管 ID 是他本人的用户 ID。

请以上面 3 个表为基础,查询出所有 2020 年后入职的所有有效用户,并按照公司 ID 顺序排序。(公司名、角色名、登录名、姓名、主管名、手机号)

SELECT
  c.company_name AS 公司名,
  r.role_name AS 角色名,
  u1.username AS 登录名,
  u1.realname AS 姓名,
  u2.realname AS 主管名,
  u1.mobile AS 手机号
FROM 
  user u1, user u2, role r, company c
WHERE
  u1.parent_id = u2.id
  AND u1.role_id = r.id
  AND u1.company_id = c.id
  AND YEAR(u1.create_time) >= 2020
  AND u1.deleted = 0
ORDER BY u1.company_id;

友情提示: 题目来源于各家真实企业,以上回答仅供参考,不能确定是否符合出题人要考查的知识点!