【Leetcode-SQL查询练习Ⅰ】

创建表employees

CREATE TABLE employees(
	emp_no INT(11) NOT NULL,
	birth_date DATE NOT NULL,
	first_name VARCHAR(14) NOT NULL,
	last_name VARCHAR(16) NOT NULL,
	gender CHAR(1) NOT NULL,
	hire_date DATE NOT NULL,
	PRIMARY KEY (emp_no)	
)

向表内插入数据

INSERT INTO employees VALUES(1, '1998-11-17', 'biao', 'yang', '男', '2021-09-01'),
(2, '1996-10-17', 'jie', 'wang', '男', '2020-09-01'),
(3, '1997-06-12', 'he', 'liu', '男', '2021-09-01'),
(4, '1998-7-21', 'ruiqi', 'ouyang', '男', '2019-09-01'),
(5, '1999-8-21', 'hailin', 'zhu', '女', '2021-09-01'),
(6, '1998-6-11', 'jiameng', 'li', '女', '2020-09-01'),
(7, '1998-3-16', 'tengfei', 'li', '男', '2022-09-01');

更新表内数据

# 更新表内数据
UPDATE employees SET hire_date='2018-09-01' WHERE emp_no=6;
UPDATE employees SET hire_date='2023-09-01' WHERE emp_no=7;

查找最晚入职员工的所有信息

采用子查询的方式,先找出入职时间最晚的,这样也可以确保有多条最晚入职时间被查询出来。有些小伙伴可能会使用 order by 的方式,不过这样的方式仅限于最晚入职数据只有一条的时候才正确。

# 查找最晚入职员工的所有信息(采用子查询的方法)
SELECT * FROM employees 
WHERE hire_date IN (SELECT MAX(hire_date) FROM employees);

查找入职员工时间排名倒数第三的员工所有信息

目标是查找员工所有信息,条件是时间排名倒数第三,这里的考点也就在倒数第三怎么去写罢了,可以 再此去复习再 Limit 相关的内容。

  • Limit m,n:表示的是从 m+1 开始,取 n 条数据
  • Limit n: 标识从第 0 条开始,取 n 条数据 是 limit(0,n) 缩写

你可能会这样写:

select * from employees 
    order by hire_date desc 
    limit 2,1

这种做法不能查询员工入职时间排名倒数第三的所有员工信息。同样可以采用子查询的方式,并结合使用distinct函数。

select * from employees

        where hire_date = (倒数第三的hire_date);

select * from employees
    where hire_date = (select distinct hire_date from employees
    order by hire_date desc 
    limit 2,1);

order by 结合 desc limit 进行使用是比较常见的使用方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值