天天看點

關于mysql的一些程式設計題目(一)

題目描述

查找最晚入職員工的所有資訊

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`));
           

輸入描述:

輸出描述:

emp_no birth_date first_name last_name gender hire_date
10008 1958-02-19 Saniya Kalloufi M 1994-09-15

好了題目出來了,先建表

關于mysql的一些程式設計題目(一)

然後,插入如下測試代碼

INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
 INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21'); 
INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28'); 
INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01');
 INSERT INTO employees VALUES(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12'); 
INSERT INTO employees VALUES(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02'); 
INSERT INTO employees VALUES(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10');
 INSERT INTO employees VALUES(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15');
INSERT INTO employees VALUES(10009,'1952-04-19','Sumant','Peac','F','1985-02-18'); 
INSERT INTO employees VALUES(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24'); 
INSERT INTO employees VALUES(10011,'1953-11-07','Mary','Sluis','F','1990-01-22'); ```  



然後這道題說的是最晚員工,也就是說hire_date字段的最大值,如何比較max的最大值呢?
我們可以用到max()這個函數,是以我的答案是           

select * from employees where hire_date=(select max(hire_date) from employees)

`

執行,結果正确

關于mysql的一些程式設計題目(一)

但是,我學弟說,他用limit也能得到正确的結果,代碼如下

select emp_no,birth_date,first_name,last_name,gender,hire_date from employees where hire_date = (select hire_date from employees order by hire_date  limit 1);```  

這樣确實是可以的,但是如果我們多插入一行資料           

INSERT INTO employees VALUES(10013,'1958-02-19','kang','shifu','M','1994-09-15');

`

這樣的話,雖然kanshifu和saniya 都是最晚入職,但是隻能選擇一個,是以這樣的話并不是很可取,是以保險的話,用我的方法

繼續閱讀