MySQL中union和order by同時使用的實現方法
MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小問題,下面透過例子來說明。首先看下面的t1表。
1、如果直接用如下sql語句是會報錯:Incorrect usage of UNION and ORDER BY。
SELECT * FROM t1 WHERE username LIKE 'l%' ORDER BY score ASC
UNION
SELECT * FROM t1 WHERE username LIKE '%m%' ORDER BY score ASC
因為union在沒有括號的情況下只能使用一個order by,所以報錯,這個語句有2種修改方法。如下:
(1)可以將前面一個order by去掉,改成如下:
SELECT * FROM t1 WHERE username LIKE 'l%'
UNION
SELECT * FROM t1 WHERE username LIKE '%m%' ORDER BY score ASC
該sql的意思就是先union,然後對整個結果集進行order by。
(2)可以透過兩個查詢分別加括號的方式,改成如下:
(SELECT * FROM t1 WHERE username LIKE 'l%' ORDER BY sroce ASC)
UNION
(SELECT * FROM t1 WHERE username LIKE '%m%' ORDER BY score ASC)
這種方式的目的是為了讓兩個結果集先分別order by,然後再對兩個結果集進行union。但是你會發現這種方式雖然不報錯了,但是兩個order by並沒有效果,所以應該改成如下:
SELECT * FROM
(SELECT * FROM t1 WHERE username LIKE 'l%' ORDER BY score ASC) t3
UNION
SELECT * FROM
(SELECT * FROM t1 WHERE username LIKE '%m%' ORDER BY score ASC) t4
也就是說,order by不能直接出現在union的子句中,但是可以出現在子句的子句中。
2、順便提一句,union和union all 的區別。
union會過濾掉兩個結果集中重複的行,而union all不會過濾掉重複行。
以上這篇MySQL中union和order by同時使用的實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援指令碼之家。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2249/viewspace-2805691/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL, Incorrect usage of UNION and ORDER BYMySql
- sql中union和union all的用法SQL
- sql中UNION和UNION ALL的區別SQL
- union 和union all 使用區別
- Linux 執行升訊威線上客服系統:同時支援 SQL Server 和 MySQL 的實現方法LinuxServerMySql
- union和enum使用
- Jupyter Notebook 中同時使用 Python 和 RPython
- Linux + .net core 開發升訊威線上客服系統:同時支援 SQL Server 和 MySQL 的實現方法LinuxServerMySql
- postgresql和mysql中的limit使用方法MySqlMIT
- union all和union的區別
- MySQL中ORDER BY與LIMIT一起使用(有坑)MySqlMIT
- 同時使用gpcrondump和gpbackup
- MySQL distinct 和 order by 排序混淆的替代方案MySql排序
- MySQL LIMIT 和 ORDER BY 最佳化MySqlMIT
- MySQL全面瓦解23:MySQL索引實現和使用MySql索引
- MySQL學習(五) UNION與UNION ALLMySql
- MAMP 中的 Mysql 和 redis 都是 unix socket 時的配置方法MySqlRedis
- SQLServer使用case when中的order bySQLServer
- MySQL按指定順序排序(order by field的使用)MySql排序
- mysql order by 和 group by 順序問題MySql
- JAVA 兩個類同時實現同一個介面的方法Java
- iview input實現點選和enter同時搜尋技巧View
- mysql和redis實時同步資料怎麼實現MySqlRedis
- MySQL資料庫定時備份的幾種實現方法MySql資料庫
- union和union all 關鍵字
- MYSQL 是如何保證binlog 和redo log同時提交的?MySql
- MySQL 中 一條 order by index limit 語句的分析MySqlIndexMIT
- 使用Junit 5時,如何同時使用 junit4和 PowerMockMock
- win10同時安裝Mysql5和mysql8Win10MySql
- 同時使用 IB 和 Masonry 時,如何刪除 NSIBPrototypingLayoutConstraintAI
- MySQL 之 ORDER BY FIELDMySql
- mysql order by 優化MySql優化
- Python 中 lru_cache 的使用和實現Python
- SQL Server中的集合運算: UNION, EXCEPT和INTERSECTSQLServer
- mysql order by是怎麼工作的?MySql
- MySQL中InnoDB儲存引擎的實現和執行原理MySql儲存引擎
- TS中 使用deprecated 實現對方法的迭代棄用
- flutter中實現仿Android端的onResume和onPause方法FlutterAndroid