有乙個員工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...