以上數據庫表:
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`));
SQL : 查詢最晚入職員工的所有信息
此題有坑(慎重),考量的邏輯思維,有兩種查詢語法,針對不同的數據環境。
環境一:最晚入職員工只有一個人;即當天單個數據
---如果只有一人,那么選擇排序后按照條件(降序)提取(limit)第一個就可以了。 limit兩種使用方法,(limit x)第一個直接設置值,值為多少就提取多少,(limit x,y)第二個是從某個位置開始提取多少條。
使用 order by(默認是升序)進行統一排,然后條件排序 desc (降序) / asc(升序),order by 必不可少,條件在擇其一。然后用 limit 提取數據即可。
select * from employees order by id(字段名) desc / asc limit x(提取數量)
select * from employess order by hire_date desc limit 0,1
select * from employess order by hire_date desc limit 1
這兩種方法是一樣的結果(只針對以上查詢條件)。當有多個數據,提取位置初始值變得時候,結果就不一樣。
環境二:入職最晚那一天有多個人;即當天多個數據
使用where 條件 並且 子查詢即可,查詢字段 (max)最大值即可
select * from employess where id = (select max(hire_date) from employess)
select * from employess where hire_date = (select max(hire_date) from employess)