1. 程式人生 > 其它 >MySQL之senior(六)——合併查詢,limit

MySQL之senior(六)——合併查詢,limit

MySQL之senior(六)——合併查詢,limit

union合併查詢結果集

#查詢工作崗位是MANAGER和SALESMAN的員工:兩種寫法(union效率要更高)
select ename,job from emp where job = 'MANAGER' or job = 'SALESMAN'; #in也可以
​
select ename,job from emp where job = 'MANAGER'
union
select ename,job from emp where job = 'SALESMAN';
​
#union的效率要高一些。對於表連線來說,每連線一次新表,則匹配的次數滿足笛卡爾積,成倍的翻。但是union可以減少匹配的次數。在減少匹配次數的情況下,還可以完成兩個結果集的拼接。
#   a 連線 b 連線 c
#   a 10條記錄
#   b 10條記錄
#   c 10條記錄
#   匹配次數是:1000
​
#   a 連線 b一個結果:10 * 10 --> 100次
#   a 連線 c一個結果:10 * 10 --> 100次
#   使用union的話是:100次 + 100次 = 200次。(union把乘法變成了加法運算)
​
#注意:
#   union在進行結果集合並的時候,要求兩個結果集的列數相同
#   MYSQL可以,oracle語法嚴格 ,不可以,報錯。oracle要求結果集合並時列和列的資料型別也要一致。(其實如果合併結果   集的查詢型別和列數不一致的話,也就沒什麼意義)

limit

  1. 作用:將查詢結果集的一部分取出來。通常使用在分頁查詢當中。 百度預設:一頁顯示10條記錄。 分頁的作用是為了提高使用者的體驗,因為一次全部都查出來,使用者體驗差。可以一頁一頁翻頁看。

  2. 用法: 完整用法:limit start_Index, length ;start_Index是起始下標,length是長度。 起始下標從0開始。 ( substr (ename, index, length) 起始下標從1開始,沒有0. ) 預設用法:limit 5; 這是取前5( 與 limit 0,5 一樣 )

  3. 注意:mysql當中limit在order by之後執行

  4. 分頁:

    每頁顯示pageSize條記錄:

    第pageNo頁:limit (pageNo - 1) * pageSize , pageSize;(等差數列)

  5. 關於DQL語句的大總結: select ...from...where...group by...having...order by...limit...;

    執行順序: 1.from 2.where 3.group by 4.having 5.select 6.order by 7.limit..