天天看點

MySQL資料庫學習筆記(10)- distinct與in和exists子查詢1. distinct的使用2. 子查詢in3. 子查詢exists

文章目錄

  • 1. distinct的使用
  • 2. 子查詢in
  • 3. 子查詢exists

1. distinct的使用

distinct 用于在查詢中傳回列的唯一不同值(去重複),支援單列或多列。(隻能寫在SELECT的後面)

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

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 = '線性代數');
           

繼續閱讀