解決Mysql多行子查詢的使用及空值問題

1 定義

  • 也稱為集合比較子查詢
  • 內查詢返回多行
  • 使用多行比較操作符

2 多行比較操作符

-- 多行子查詢

-- IN
SELECT
	employee_id,
	manager_id,
	department_id 
FROM
	employees 
WHERE
	manager_id IN ( -- 在返回集合中查找有沒有相同的manager_id在裡面
	SELECT
		manager_id 
	FROM
		employees 
	WHERE
	employee_id IN ( 141, 147 ));
	
-- ANY
#題目:返回其它job_id中比job_id為'IT_PROG'部門任一工資低的員工的員工號、姓名、job_id 以及salary
	last_name,
	job_id,
	salary 
	job_id != 'IT_PROG' 
	AND salary < ANY ( -- 比任意一個小都可以
	SELECT salary FROM employees WHERE job_id = 'IT_PROG' );
-- ALL
#題目:返回其它job_id中比job_id為'IT_PROG'部門所有工資低的員工的員工號、姓名、job_id 以及salary
	AND salary < ALL ( -- 比所有的都小才可以

3 空值問題

3.1 問題

	-- 空值問題
SELECT
	last_name 
FROM
	employees 
WHERE
	employee_id NOT IN (
	SELECT -- 子查詢中的結果有NULL
		manager_id 
	employees)

子查詢的結果:

查詢結果:

3.2 解決

去掉子查詢中的NULL即可

	-- 空值問題解決
SELECT
	last_name 
FROM
	employees 
WHERE
	employee_id NOT IN (
	SELECT
		manager_id 
	FROM
		employees 
	manager_id IS NOT NULL)

子查詢去掉NULL:

查詢結果:

到此這篇關於Mysql多行子查詢的使用及空值問題的解決的文章就介紹到這瞭,更多相關Mysql多行子查詢內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: