[SQL 筆記備份]- 024_子查詢(3)

[SQL 筆記備份]- 024_子查詢(3)

[SQL 筆記備份]- 024_子查詢(3)


 

http://sql.yehyeh.net/content/Subqueries.php

 

WHERE裡的子查詢

說明:


·       


一個SQL敘述中,若含有另一個以小括號括住的SQL敘述,則稱為子查詢


·       


子查詢很常使用,尤其是一個SQL敘述牽涉到多個表格時。


·       


一個SQL敘述中,可以同時擁有多個子查詢


·       


子查詢回傳結果可以代替表格,亦即子查詢可以接在FROM後面


·       


子查詢常搭配INNOT 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

 

 

 

 

 


發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *