SELECT ...
UNION [ALL | DISTINCT]
SELECT ...
[UNION [ALL | DISTINCT] SELECT ...]
SELECT 結果集,欄位數、型別、順序必須一致。DISTINCT 去重;ALL 保留重複行,效能較好。SELECT 為準。對整體結果排序分頁,需用括號包住各 SELECT:
(SELECT a FROM tbl WHERE a=10 AND b=1)
UNION
(SELECT a FROM tbl WHERE a=11 AND b=2)
ORDER BY a LIMIT 10;
(SELECT a FROM tbl WHERE a=10 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM tbl WHERE a=11 ORDER BY a LIMIT 10);
若有別名,ORDER BY 必須用別名,不可用原欄位名。
(SELECT * FROM `blog` WHERE top=1 ORDER BY created DESC)
UNION
(SELECT * FROM `blog` WHERE top=0 ORDER BY created DESC)
LIMIT 2, 3;
單一 SQL 即可實現「置頂在前、一般在後」的分頁邏輯,避免應用層多次查詢合併。