首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 與 MSSQL 查詢語法對比(七)—— SELECT、子查詢、正則與分頁

     編輯:MySQL 綜合教學

MySQL 基本 SELECT 語法結構

SELECT 屬性列表
FROM 表名/視圖
[WHERE 條件]
[GROUP BY 屬性 [HAVING 條件]]
[ORDER BY 屬性 [ASC|DESC]]
[LIMIT [offset,] row_count]

MySQL 不區分大小寫,與 MSSQL 一致。

常用查詢範例

  • 基本篩選:WHERE f_price > 5.1, IN / NOT IN, BETWEEN / NOT BETWEEN
  • 模糊比對:%(任意長度)、_(單一字元),MSSQL 相同。
  • 空值判斷:IS NULL / IS NOT NULL。
  • 邏輯運算:AND / OR / DISTINCT。

GROUP BY 進階

  • GROUP_CONCAT():分組內字串串聯,MSSQL 無原生對應,需用 FOR XML PATH 實現。
  • HAVING:分組後過濾,如 HAVING COUNT(f_name) > 1。
  • WITH ROLLUP:產生彙總行,不可與 ORDER BY 共用,MSSQL 也有 ROLLUP。

分頁:LIMIT vs OFFSET/FETCH

  • MySQL:LIMIT 4,3(跳過 4 筆取 3 筆),5.6+ 支援 LIMIT 3 OFFSET 4。
  • MSSQL 2012+:ORDER BY col OFFSET 4 ROWS FETCH NEXT 3 ROWS ONLY,必須搭配 ORDER BY。

子查詢:ANY / ALL

> ANY (子查詢)  -- 大於子查詢任一值
> ALL (子查詢)  -- 大於子查詢所有值

兩資料庫行為一致。

合併查詢:UNION / UNION ALL

  • UNION:去重並排序。
  • UNION ALL:保留重複,不排序,效能較好。

正則表達式查詢(MySQL 強項)

MySQL 使用 REGEXP 關鍵字,MSSQL 無原生支援。

模式說明範例
^開頭WHERE f_name REGEXP '^b'
$結尾WHERE f_name REGEXP 'y$'
.任一字元WHERE f_name REGEXP 'a.g'
* / +前字元 0+ / 1+ 次'^ba*' / '^ba+'
|或'on|ap'
[]字元集合'[ot]', '[4-6]'
[^]排除集合'[^a-e1-2]'
{n,} / {n,m}出現次數範圍'b{1,}', 'ba{1,3}'

總結

MySQL 在正則查詢、GROUP_CONCAT、LIMIT 分頁上語法更靈活簡潔;MSSQL 在分頁需搭配 ORDER BY,正則需 CLR 或 LIKE 替代。實務上依專案技術棧選擇即可。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved