01 查詢最晚入職員工的所有資訊 題解

2021-10-21 11:57:21 字數 1871 閱讀 1113

有乙個員工employees表簡況如下:

建表語句如下:

create

table

`employees`

(`emp_no`

int(11)

notnull

,`birth_date`

date

notnull

,`first_name`

varchar(14

)not

null

,`last_name`

varchar(16

)not

null

,`gender`

char(1

)not

null

,`hire_date`

date

notnull

,primary

key(

`emp_no`))

;

請你查詢employees裡最晚入職員工的所有資訊,以上例子輸出如下:

按理來說這個解法才是正解,因為最後一天不一定只有乙個員工入職,也有可能多個員工同時在這一天入職。但其實題目說的模稜兩可,貌似只考慮了最後一天只有乙個員工的情況。

select

*from employees where hire_date =

(select

max(hire_date)

from employees)

;

占用記憶體:5944kb

超過1.95%用mysql提交的**

對入職時間降序排序後直接使用limit關鍵字即可。

select

*from employees order

by hire_date desc

limit

1;

占用記憶體:5368kb

超過20.71%用mysql提交的**

可以看出占用記憶體略小於子查詢的寫法,一般情況下優先使用關鍵字。

mysql裡分頁一般用limit來實現,類似sqlserver中top的用法。

select

*from

table

limit

[offset,]

rows

|rows

offset

offset

;

limit

作用limit(n)取前n條記錄

limit(m, n)從第 m + 1 行開始取 n 條記錄,n也可為負數

limit n offset m效果同上

複習過後,我們嘗試用兩種寫法再次將這個演算法實現一下(效率同上)。

-- 使用limit 與 offset關鍵字

select

*from employees

order

by hire_date desc

limit

1offset0;

-- 僅使用limit關鍵字

select

*from employees

order

by hire_date desc

limit0,

1;

sql演算法 查詢最晚入職員工的所有資訊

建表語句如下 create table employees emp no int 11 notnull birth date date notnull first name varchar 14 not null last name varchar 16 not null gender char 1...

資料庫 查詢最晚入職員工的所有資訊

查詢最晚入職員工的所有資訊 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,gend...

SQL練習 1 查詢最晚入職員工的所有資訊

查詢最晚入職員工的所有資訊 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,gend...