-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathch10_02noted.sql
153 lines (114 loc) · 3.81 KB
/
ch10_02noted.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
判斷因子可以是<、>、==
SELECT Name, GNP
FROM countrydata
WHERE GNP = ( SELECT MAX(GNP)
FROM countrydata )
二個欄位不能丟給單一個欄位做子查詢
→Operand should contain 1 column(s)
SELECT Name, GNP
FROM countrydata
WHERE GNP = ( SELECT Code, MAX(GNP)
FROM countrydata )
若改成一個欄位並做分群,得到的資訊為多筆資料的集合
→Subquery returns more than 1 row 就會沒有辦法做子查詢
SELECT Name, GNP
FROM countrydata
WHERE GNP = ( SELECT MAX(GNP)
FROM countrydata
GROUP BY Continent )
SELECT countrydataCode
FROM worldcity
WHERE Population > 9000000
SELECT Name
FROM countrydata
WHERE Code IN ('BRA','IDN','IND','JPN','GBR'
'CHN')
SELECT Name
FROM countrydata
WHERE Code IN ( SELECT countrydataCode
FROM city
WHERE Population > 9000000 )
SELECT Name
FROM countrydata
WHERE Code = ( SELECT countrydataCode //等號為一個,不可以判斷多個數據
FROM worldcity
WHERE Population > 9000000 )
※老師更新之後的資料(2023/9/4/09:49am)
SELECT Name
FROM countrydata
WHERE Code IN ( SELECT countrydataCode
FROM worldcity
WHERE Population > 4000000 )
SELECT Name
FROM countrydata
WHERE Code = ( SELECT countrydataCode
FROM worldcity
WHERE Population > 4000000 )
SELECT Name
FROM countrydata
WHERE Code NOT IN ( SELECT countrydataCode
FROM worldcity
WHERE Population > 9000000 )
※自己改寫的資料
SELECT Name
FROM countrydata
WHERE Code IN ( SELECT countrydataCode
FROM worldcity
WHERE Population > 6000000 )
→ 無法利用"="來做多對一的資料比對子查詢,就必須用in/not in語法
SELECT Name
FROM countrydata
WHERE Code NOT IN ( SELECT countrydataCode // NOT IN就為多筆資料的子查詢,找出「多筆不是」的資料
FROM worldcity
WHERE Population > 9000000 )
※請先匯入分享區的outertable.sql、innertable.sql檔才能繼續作業!
SELECT * FROM outertable
SELECT * FROM innertable
SELECT *
FROM outertable
WHERE n > ALL ( SELECT n
FROM innertable )
SELECT *
FROM outertable
WHERE n <> ALL ( SELECT n
FROM innertable )
SELECT *
FROM outertable
WHERE n NOT IN ( SELECT n
FROM innertable )
SELECT *
FROM outertable
WHERE n = ANY ( SELECT n
FROM innertable )
SELECT *
FROM outertable
WHERE n IN ( SELECT n
FROM innertable )
SELECT Name, GNP
FROM countrydata
WHERE Continent = 'Asia' AND GovernmentForm = 'Republic'
SELECT Name, GNP
FROM countrydata
WHERE ( Continent, GovernmentForm ) = ( 'Asia', 'Republic' )
SELECT Name
FROM countrydata
WHERE Region = ( SELECT Region
FROM countrydata
WHERE Name = 'Iraq' )
AND
GovernmentForm = ( SELECT GovernmentForm
FROM countrydata
WHERE Name = 'Iraq' )
SELECT Name
FROM countrydata
WHERE (Region, GovernmentForm) = ( SELECT Region, GovernmentForm
FROM countrydata
WHERE Name = 'Iraq' )
SELECT Continent, MAX(GNP)
FROM countrydata
GROUP BY Continent
SELECT Continent, Name, GNP
FROM countrydata
WHERE (Continent, GNP) IN ( SELECT Continent, MAX(GNP)
FROM countrydata
GROUP BY Continent )