国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL筆記之子查詢使用介紹

2024-07-24 13:00:50
字體:
供稿:網(wǎng)友

子查詢是將一個查詢語句嵌套在另一個查詢語句中

內(nèi)層查詢語句的查詢結(jié)果,可以為外層查詢語句提供查詢條件

因為在特定情況下,一個查詢語句的條件需要另一個查詢語句來獲取

參考表:employee

MySQL筆記之子查詢使用介紹

參考表:department

MySQL筆記之子查詢使用介紹

帶IN關(guān)鍵字的子查詢

復(fù)制代碼 代碼如下:


mysql> SELECT * FROM employee
-> WHERE d_id IN
-> (SELECT d_id FROM department);
+------+------+--------+------+------+--------------------+
| num | d_id | name | age | sex | homeaddr|
+------+------+--------+------+------+--------------------+
| 1 | 1001 | 張三 | 26 | 男 | 北京市海淀區(qū)|
| 2 | 1001 | 李四 | 24 | 女 | 北京市昌平區(qū)|
| 3 | 1002 | 王五 | 25 | 男 | 湖南長沙市|
+------+------+--------+------+------+--------------------+
rows in set (0.00 sec)


此處首先查詢出department表中所有d_id字段的信息,并將結(jié)果作為條件

接著查詢employee表中以d_id為條件的所有字段信息

NOT IN的效果與上面剛好相反

帶比較運算符的子查詢

復(fù)制代碼 代碼如下:


mysql> SELECT d_id, d_name FROM department
-> WHERE d_id!=
-> (SELECT d_id FROM employee WHERE age=24);
+------+-----------+
| d_id | d_name |
+------+-----------+
| 1002 | 生產(chǎn)部 |
| 1003 | 銷售部 |
+------+-----------+
rows in set (0.00 sec)


這里查詢出了哪些部門沒有年齡為24歲的員工,看起來有點復(fù)雜

此外,運算符還有很多,這里不再贅述


帶EXISTS關(guān)鍵字的子查詢

EXISTS關(guān)鍵字表示存在。使用EXISTS關(guān)鍵字時,內(nèi)層查詢語句不返回查詢的記錄,而是返回一個真假值,如果內(nèi)層查詢語句查詢到滿足條件的記錄,就返回true,否則返回false

當(dāng)返回的值為true時,外層查詢語句將進行查詢,否則不進行查詢

復(fù)制代碼 代碼如下:


mysql> SELECT * FROM employee
-> WHERE EXISTS
-> (SELECT d_name FROM department WHERE d_id=1004);
Empty set (0.00 sec)


此處內(nèi)層循環(huán)并沒有查詢到滿足條件的結(jié)果,因此返回false,外層查詢不執(zhí)行

NOT EXISTS剛好與之相反

當(dāng)然,EXISTS關(guān)鍵字可以與其他的查詢條件一起使用

條件表達式與EXISTS關(guān)鍵字之間用AND或者OR來連接

復(fù)制代碼 代碼如下:


mysql> SELECT * FROM employee
-> WHERE age>24 AND EXISTS
-> (SELECT d_name FROM department WHERE d_id=1003);
+------+------+--------+------+------+--------------------+
| num | d_id | name | age | sex | homeaddr|
+------+------+--------+------+------+--------------------+
| 1 | 1001 | 張三 | 26 | 男 | 北京市海淀區(qū)|
| 3 | 1002 | 王五 | 25 | 男 | 湖南長沙市|
+------+------+--------+------+------+--------------------+
rows in set (0.00 sec)

帶ANY關(guān)鍵字的子查詢

ANY關(guān)鍵字表示滿足其中任一條件

復(fù)制代碼 代碼如下:


mysql> SELECT * FROM employee
-> WHERE d_id!=ANY
-> (SELECT d_id FROM department);
+------+------+--------+------+------+--------------------+
| num | d_id | name | age | sex | homeaddr|
+------+------+--------+------+------+--------------------+
| 1 | 1001 | 張三 | 26 | 男 | 北京市海淀區(qū)|
| 2 | 1001 | 李四 | 24 | 女 | 北京市昌平區(qū)|
| 3 | 1002 | 王五 | 25 | 男 | 湖南長沙市|
| 4 | 1004 | Aric | 15 | 男 | England|
+------+------+--------+------+------+--------------------+
rows in set (0.00 sec)

帶ALL關(guān)鍵字的子查詢

ALL關(guān)鍵字表示滿足其中所有條件

復(fù)制代碼 代碼如下:


mysql> SELECT * FROM employee
-> WHERE d_id>=ALL
-> (SELECT d_id FROM department);
+------+------+------+------+------+----------+
| num | d_id | name | age | sex | homeaddr |
+------+------+------+------+------+----------+
| 4 | 1004 | Aric | 15 | 男 | England |
+------+------+------+------+------+----------+
row in set (0.00 sec)


暫時不明白這兩條語句是什么意思,到時候再補上


UNION合并查詢結(jié)果

復(fù)制代碼 代碼如下:


mysql> SELECT d_id FROM employee
-> UNION
-> SELECT d_id FROM department;
+------+
| d_id |
+------+
| 1001 |
| 1002 |
| 1004 |
| 1003 |
+------+
rows in set (0.00 sec)


合并比較好理解,也就是將多個查詢的結(jié)果合并在一起,然后去除其中的重復(fù)記錄

如果想保存重復(fù)記錄可以使用UNION ALL語句

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东城区| 阿拉善左旗| 昌黎县| 柘城县| 广灵县| 周宁县| 怀柔区| 富锦市| 邻水| 胶州市| 盐源县| 东丽区| 晋城| 九龙城区| 沭阳县| 静宁县| 万年县| 汕头市| 开远市| 武陟县| 尼玛县| 鹿邑县| 原阳县| 巫山县| 庆元县| 墨脱县| 视频| 福清市| 阿拉善盟| 平阴县| 五原县| 西藏| 柘荣县| 赤峰市| 天水市| 五家渠市| 剑阁县| 栖霞市| 霍林郭勒市| 阿拉尔市| 措勤县|