Zi 字媒體
2017-07-25T20:27:27+00:00
[SQL 筆記備份]- 024_子查詢(3)
http://sql.yehyeh.net/content/Subqueries.php
在WHERE裡的子查詢
說明:
·
一個SQL敘述中,若含有另一個以小括號括住的SQL敘述,則稱為子查詢
·
子查詢很常使用,尤其是一個SQL敘述牽涉到多個表格時。
·
一個SQL敘述中,可以同時擁有多個子查詢
·
子查詢回傳結果可以代替表格,亦即子查詢可以接在FROM後面
·
子查詢常搭配IN或NOT IN關鍵字使用,此時只能查詢一個欄位
格式:
SELECT *
FROM 資料表
WHERE 欄位 IN (子查詢)
範例:
找出考試有及格的學生姓名
Students
NO
NAME
SEX
HEIGHT
103001
王小明
男
170
103002
王小明
女
160
103003
陳小華
女
165
103004
張小強
男
165
103005
張小玲
女
Exam1
NO
SCORE
103001
70
103002
80
103003
50
Exam2
NO
SCORE
103001
80
103002
50
103004
70
SELECT NAME, SCORE
FROM STUDENT
WHERE NO IN ( SELECT NO FROM EXAM1 WHERE SCORE >= 60);
NAME
SCORE
王小明
70
王小明
80
—————————
FROM後的子查詢
說明:
·
FROM後面接子查詢時,通常要查的表格不只一個
格式:
SELECT * FROM (子查詢1)[, (子查詢2)]
範例:
找出考試有及格的學生姓名
Students
NO
NAME
SEX
HEIGHT
103001
王小明
男
170
103002
王小明
女
160
103003
陳小華
女
165
103004
張小強
男
165
103005
張小玲
女
xam1
NO
SCORE
103001
70
103002
80
103003
50
Exam2
NO
SCORE
103001
80
103002
50
103004
70
SELECT NAME, SCORE
FROM STUDENT A,
(SELECT NO FROM EXAM1 WHERE SCORE >= 60) B
WHERE A.NO = B.NO;
NAME
SCORE
王小明
70
王小明
80
寫了
5860316篇文章,獲得
23313次喜歡