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_CONCAT():分組內字串串聯,MSSQL 無原生對應,需用 FOR XML PATH 實現。HAVING:分組後過濾,如 HAVING COUNT(f_name) > 1。WITH ROLLUP:產生彙總行,不可與 ORDER BY 共用,MSSQL 也有 ROLLUP。LIMIT 4,3(跳過 4 筆取 3 筆),5.6+ 支援 LIMIT 3 OFFSET 4。ORDER BY col OFFSET 4 ROWS FETCH NEXT 3 ROWS ONLY,必須搭配 ORDER BY。> ANY (子查詢) -- 大於子查詢任一值
> ALL (子查詢) -- 大於子查詢所有值
兩資料庫行為一致。
UNION:去重並排序。UNION ALL:保留重複,不排序,效能較好。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 替代。實務上依專案技術棧選擇即可。