MySQL-sql99-子查詢
阿新 • • 發佈:2022-05-23
標量子查詢
案例:誰的工資比Abel高?
# ①查詢Abel的工資
SELECT `salary`
FROM `employees`
WHERE `last_name`='Abel';
發現是一行一列 為標量子查詢
# ②查詢員工的資訊,滿足salary>①結果
SELECT *
FROM `employees`
WHERE `salary`>(
SELECT `salary`
FROM `employees`
WHERE `last_name`='Abel'
);
整道題的結果就出來啦
案例:返回job_id與141號員工相同,salary比143號員工多的員工 姓名,job_id和工資
# 案例:返回job_id與141號員工相同,salary比143號員工多的員工 姓名,job_id和工資 # ①查詢141號員工的job_id SELECT `job_id` FROM `employees` WHERE `employee_id`=141; # ②查詢員工的salary SELECT `salary` FROM `employees` WHERE `employee_id`=143; # ③返回job_id與141號員工相同,salary比143號員工多的員工 姓名,job_id和工資 SELECT `first_name`,`job_id`,`salary` FROM `employees` WHERE `job_id`=( SELECT `job_id` FROM `employees` WHERE `employee_id`=141 ) AND `salary`>( SELECT `salary` FROM `employees` WHERE `employee_id`=143 );
在子查詢中運用分組函式
案例:返回公司工資最少的員工的last_name,job_id和salary
# 案例:返回公司工資最少的員工的last_name,job_id和salary # ①查詢公司的最低工資 SELECT MIN(`salary`) FROM `employees`; # ②查詢last_name,job_id和salary,要求salary=① SELECT `last_name`,`job_id`,`salary` FROM `employees` WHERE `salary`=( SELECT MIN(`salary`) FROM `employees` );
在having後面用子查詢
案例:查詢最低工資大於50號部門最低工資的部門id和其最低工資
# 案例:查詢最低工資大於50號部門最低工資的部門id和其最低工資
# ①查詢50號部門的最低工資
SELECT MIN(`salary`)
FROM `employees`
WHERE `department_id`=50;
# ②查詢每個部門的最低工資
SELECT MIN(`salary`),`department_id`
FROM `employees`
GROUP BY `department_id`;
# ③篩選②,滿足MIN(`salary`)>①
SELECT MIN(`salary`),`department_id`
FROM `employees`
GROUP BY `department_id`
HAVING MIN(`salary`)>(
SELECT MIN(`salary`)
FROM `employees`
WHERE `department_id`=50
);