MySQL數據庫學習筆記(10)- distinct與in和exists子查詢


1. distinct的使用

distinct 用於在查詢中返回列的唯一不同值(去重複),支持單列或多列。(只能寫在SELECT的後面)

比如,我們想獲取員工表中所有的部門,可以將SQL語句寫成如下:

SELECT DISTINCT department FROM employee;

2. 子查詢in

如果運算符 in 後面的值是來源於某個查詢結果,並非是指定的幾個值,這是就需要用到子查詢。子查詢又稱爲內部查詢或嵌套查詢,即在SQL查詢的WHERE子句中嵌入查詢語句。
它的基本形式如下:

SELECT column_name FROM table_name 
	WHERE column_name IN(
	SELECT column_name FROM table_name [WHERE]
);

下面是一個簡單的示例,根據表 score 中student_no字段,顯示 student 表中的具體學生信息。

SELECT * FROM student 
	WHERE id 
	IN (SELECT student_no FROM score);

3. 子查詢exists

exists 是子查詢中用於測試內部查詢是否返回任何行的布爾運算符。將主查詢的數據放到子查詢中
做條件驗證,根據驗證結果(TRUE 或 FALSE)來決定主查詢的數據結果是否保留。

它的一般形式如下:

#where子句使用exists語法
SELECT column_name1 
	FROM table_name1 
	WHERE EXISTS (SELECT * FROM table_name2 WHERE condition);

簡單的示例:

select * from 
	student A 
	where exists 
	(select * from score B where A.id = B.student_no and B.course = '線性代數');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章