MySQL數(shù)據(jù)庫之union,limit和子查詢?cè)斀?/h1>
更新時(shí)間:2022年07月25日 08:45:24 作者:世界盡頭與你
這篇文章主要為大家詳細(xì)介紹一下MySQL數(shù)據(jù)庫中union、limit和子查詢的使用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下
1.where中的子查詢
案例:查詢比最低工資高的員工姓名和薪資
子查詢,先查詢子查詢括號(hào)里的,再向上級(jí)進(jìn)行查詢
mysql> select ename,sal from emp where sal
-> >
-> (select min(sal) from emp);
+--------+---------+
| ename | sal |
+--------+---------+
| ALLEN | 1600.00 |
| WARD | 1250.00 |
| JONES | 2975.00 |
| MARTIN | 1250.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| SCOTT | 3000.00 |
| KING | 5000.00 |
| TURNER | 1500.00 |
| ADAMS | 1100.00 |
| JAMES | 950.00 |
| FORD | 3000.00 |
| MILLER | 1300.00 |
+--------+---------+
13 rows in set (0.02 sec)
2.from子句后的子查詢
from后面的子查詢,可以將子查詢的查詢結(jié)果當(dāng)作一張臨時(shí)表來看待
案例:找出每個(gè)崗位的平均薪資的薪資等級(jí)
mysql> select
-> t.*,s.grade
-> from
-> (select job,avg(sal) as avgsal from emp group by job) t
-> join salgrade s
-> on
-> t.avgsal between s.losal and s.hisal;
+-----------+-------------+-------+
| job | avgsal | grade |
+-----------+-------------+-------+
| CLERK | 1037.500000 | 1 |
| SALESMAN | 1400.000000 | 2 |
| MANAGER | 2758.333333 | 4 |
| ANALYST | 3000.000000 | 4 |
| PRESIDENT | 5000.000000 | 5 |
+-----------+-------------+-------+
5 rows in set (0.00 sec)
3.union
MySQL UNION 操作符用于連接兩個(gè)以上的 SELECT 語句的結(jié)果組合到一個(gè)結(jié)果集合中。多個(gè) SELECT 語句會(huì)刪除重復(fù)的數(shù)據(jù)。
MySQL UNION 操作符語法格式:
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
參數(shù)
- expression1, expression2, ... expression_n: 要檢索的列。
- tables: 要檢索的數(shù)據(jù)表。
- WHERE conditions: 可選, 檢索條件。
- DISTINCT: 可選,刪除結(jié)果集中重復(fù)的數(shù)據(jù)。默認(rèn)情況下 UNION 操作符已經(jīng)刪除了重復(fù)數(shù)據(jù),所以 DISTINCT修飾符對(duì)結(jié)果沒啥影響。
- ALL: 可選,返回所有結(jié)果集,包含重復(fù)數(shù)據(jù)。
案例:查詢工作崗位為MANAGER或者SALESMAN的員工信息(使用union)
mysql> select ename,job from emp where job = 'MANAGER'
-> union
-> select ename,job from emp where job = 'SALESMAN';
+--------+----------+
| ename | job |
+--------+----------+
| JONES | MANAGER |
| BLAKE | MANAGER |
| CLARK | MANAGER |
| ALLEN | SALESMAN |
| WARD | SALESMAN |
| MARTIN | SALESMAN |
| TURNER | SALESMAN |
+--------+----------+
7 rows in set (0.00 sec)
為什么使用union而不是or邏輯運(yùn)算?因?yàn)閡nion效率更高!
另外,對(duì)于表連接來說,如果有恰當(dāng)?shù)膗nion語句可以操作與之相同的效果,優(yōu)先使用union操作
union使用注意:
查詢的兩個(gè)結(jié)果集列數(shù)必須相同
在Mysql中列的數(shù)據(jù)類型可以存在差異,但是在Oracle中則不可以
4.limit查詢
limit用于限制結(jié)果集的長度
后面可以存在一個(gè)參數(shù)或者兩個(gè)參數(shù)(起始下標(biāo),取數(shù)據(jù)條數(shù))
案例:按照薪資降序取出排名前5的員工信息
mysql> select ename,sal
-> from emp
-> order by sal desc
-> limit 0,5;
+-------+---------+
| ename | sal |
+-------+---------+
| KING | 5000.00 |
| FORD | 3000.00 |
| SCOTT | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
+-------+---------+
5 rows in set (0.00 sec)
limit在order by之后執(zhí)行
5.分頁
假設(shè)每頁要訪問y條數(shù)據(jù),那么第x頁的數(shù)據(jù)就是
limit((x-1)*y,y)
以上就是MySQL數(shù)據(jù)庫之union,limit和子查詢?cè)斀獾脑敿?xì)內(nèi)容,更多關(guān)于MySQL union limit 子查詢的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
-
Windows系統(tǒng)下MySQL忘記root密碼的2種解決辦法
這篇文章主要介紹了Windows系統(tǒng)下MySQL忘記root密碼的2種解決辦法,一種是通過啟動(dòng)MySQL時(shí)跳過權(quán)限表驗(yàn)證,然后重置密碼,另一種是創(chuàng)建一個(gè)包含新密碼的文本文件,并通過MySQL的--init-file選項(xiàng)來應(yīng)用該文件中的密碼設(shè)置,需要的朋友可以參考下 2024-11-11
-
mysql千萬級(jí)數(shù)據(jù)量根據(jù)索引優(yōu)化查詢速度的實(shí)現(xiàn)
這篇文章主要介紹了mysql千萬級(jí)數(shù)據(jù)量根據(jù)索引優(yōu)化查詢速度的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧 2021-03-03
-
MySQL索引數(shù)據(jù)結(jié)構(gòu)入門詳細(xì)教程
這篇文章主要為大家介紹了MySQL索引數(shù)據(jù)結(jié)構(gòu)入門詳細(xì)教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪 2023-05-05
-
mysql超大分頁優(yōu)化的實(shí)現(xiàn)
本文介紹了MySQL中處理超大分頁查詢的優(yōu)化方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧 2024-12-12
-
mysql中g(shù)roup by與having合用注意事項(xiàng)分享
在mysql中g(shù)roup by分組查詢我們經(jīng)常會(huì)用到,并且還同時(shí)會(huì)與having合用,下面我介紹group by用法與having合用注意事項(xiàng),希望此教程對(duì)各位朋友有所幫助 2013-10-10
-
mysql命令行中執(zhí)行sql的幾種方式總結(jié)
下面小編就為大家?guī)硪黄猰ysql命令行中執(zhí)行sql的幾種方式總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧 2016-11-11
-
MySQL中多個(gè)left?join?on關(guān)聯(lián)條件的順序說明
這篇文章主要介紹了MySQL中多個(gè)left?join?on關(guān)聯(lián)條件的順序說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教 2022-11-11
最新評(píng)論
1.where中的子查詢
案例:查詢比最低工資高的員工姓名和薪資
子查詢,先查詢子查詢括號(hào)里的,再向上級(jí)進(jìn)行查詢
mysql> select ename,sal from emp where sal
-> >
-> (select min(sal) from emp);
+--------+---------+
| ename | sal |
+--------+---------+
| ALLEN | 1600.00 |
| WARD | 1250.00 |
| JONES | 2975.00 |
| MARTIN | 1250.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| SCOTT | 3000.00 |
| KING | 5000.00 |
| TURNER | 1500.00 |
| ADAMS | 1100.00 |
| JAMES | 950.00 |
| FORD | 3000.00 |
| MILLER | 1300.00 |
+--------+---------+
13 rows in set (0.02 sec)2.from子句后的子查詢
from后面的子查詢,可以將子查詢的查詢結(jié)果當(dāng)作一張臨時(shí)表來看待
案例:找出每個(gè)崗位的平均薪資的薪資等級(jí)
mysql> select
-> t.*,s.grade
-> from
-> (select job,avg(sal) as avgsal from emp group by job) t
-> join salgrade s
-> on
-> t.avgsal between s.losal and s.hisal;
+-----------+-------------+-------+
| job | avgsal | grade |
+-----------+-------------+-------+
| CLERK | 1037.500000 | 1 |
| SALESMAN | 1400.000000 | 2 |
| MANAGER | 2758.333333 | 4 |
| ANALYST | 3000.000000 | 4 |
| PRESIDENT | 5000.000000 | 5 |
+-----------+-------------+-------+
5 rows in set (0.00 sec)3.union
MySQL UNION 操作符用于連接兩個(gè)以上的 SELECT 語句的結(jié)果組合到一個(gè)結(jié)果集合中。多個(gè) SELECT 語句會(huì)刪除重復(fù)的數(shù)據(jù)。
MySQL UNION 操作符語法格式:
SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL | DISTINCT] SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions];
參數(shù)
- expression1, expression2, ... expression_n: 要檢索的列。
- tables: 要檢索的數(shù)據(jù)表。
- WHERE conditions: 可選, 檢索條件。
- DISTINCT: 可選,刪除結(jié)果集中重復(fù)的數(shù)據(jù)。默認(rèn)情況下 UNION 操作符已經(jīng)刪除了重復(fù)數(shù)據(jù),所以 DISTINCT修飾符對(duì)結(jié)果沒啥影響。
- ALL: 可選,返回所有結(jié)果集,包含重復(fù)數(shù)據(jù)。
案例:查詢工作崗位為MANAGER或者SALESMAN的員工信息(使用union)
mysql> select ename,job from emp where job = 'MANAGER'
-> union
-> select ename,job from emp where job = 'SALESMAN';
+--------+----------+
| ename | job |
+--------+----------+
| JONES | MANAGER |
| BLAKE | MANAGER |
| CLARK | MANAGER |
| ALLEN | SALESMAN |
| WARD | SALESMAN |
| MARTIN | SALESMAN |
| TURNER | SALESMAN |
+--------+----------+
7 rows in set (0.00 sec)
為什么使用union而不是or邏輯運(yùn)算?因?yàn)閡nion效率更高!
另外,對(duì)于表連接來說,如果有恰當(dāng)?shù)膗nion語句可以操作與之相同的效果,優(yōu)先使用union操作
union使用注意:
查詢的兩個(gè)結(jié)果集列數(shù)必須相同
在Mysql中列的數(shù)據(jù)類型可以存在差異,但是在Oracle中則不可以
4.limit查詢
limit用于限制結(jié)果集的長度
后面可以存在一個(gè)參數(shù)或者兩個(gè)參數(shù)(起始下標(biāo),取數(shù)據(jù)條數(shù))
案例:按照薪資降序取出排名前5的員工信息
mysql> select ename,sal
-> from emp
-> order by sal desc
-> limit 0,5;
+-------+---------+
| ename | sal |
+-------+---------+
| KING | 5000.00 |
| FORD | 3000.00 |
| SCOTT | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
+-------+---------+
5 rows in set (0.00 sec)
limit在order by之后執(zhí)行
5.分頁
假設(shè)每頁要訪問y條數(shù)據(jù),那么第x頁的數(shù)據(jù)就是
limit((x-1)*y,y)
以上就是MySQL數(shù)據(jù)庫之union,limit和子查詢?cè)斀獾脑敿?xì)內(nèi)容,更多關(guān)于MySQL union limit 子查詢的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Windows系統(tǒng)下MySQL忘記root密碼的2種解決辦法
這篇文章主要介紹了Windows系統(tǒng)下MySQL忘記root密碼的2種解決辦法,一種是通過啟動(dòng)MySQL時(shí)跳過權(quán)限表驗(yàn)證,然后重置密碼,另一種是創(chuàng)建一個(gè)包含新密碼的文本文件,并通過MySQL的--init-file選項(xiàng)來應(yīng)用該文件中的密碼設(shè)置,需要的朋友可以參考下2024-11-11
mysql千萬級(jí)數(shù)據(jù)量根據(jù)索引優(yōu)化查詢速度的實(shí)現(xiàn)
這篇文章主要介紹了mysql千萬級(jí)數(shù)據(jù)量根據(jù)索引優(yōu)化查詢速度的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
MySQL索引數(shù)據(jù)結(jié)構(gòu)入門詳細(xì)教程
這篇文章主要為大家介紹了MySQL索引數(shù)據(jù)結(jié)構(gòu)入門詳細(xì)教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
mysql超大分頁優(yōu)化的實(shí)現(xiàn)
本文介紹了MySQL中處理超大分頁查詢的優(yōu)化方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
mysql中g(shù)roup by與having合用注意事項(xiàng)分享
在mysql中g(shù)roup by分組查詢我們經(jīng)常會(huì)用到,并且還同時(shí)會(huì)與having合用,下面我介紹group by用法與having合用注意事項(xiàng),希望此教程對(duì)各位朋友有所幫助2013-10-10
mysql命令行中執(zhí)行sql的幾種方式總結(jié)
下面小編就為大家?guī)硪黄猰ysql命令行中執(zhí)行sql的幾種方式總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
MySQL中多個(gè)left?join?on關(guān)聯(lián)條件的順序說明
這篇文章主要介紹了MySQL中多個(gè)left?join?on關(guān)聯(lián)條件的順序說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11

