在MySQL中,想要對錶的多次查詢結果分別排序合併是不可行的
如:
SELECT name FROM student
ORDER BY age
UNION
SELECT grade FROM student
ORDER BY age;
爲了避開語法的問題,有了下面的解決辦法,使用子查詢
SELECT * from
(SELECT name FROM student
ORDER BY age) t1
UNION (all)
SELECT * from
(SELECT grade FROM student
ORDER BY age);
順利通過,可是查看結果會發現,排序失效了。因爲子查詢規則是沒有top語句(mysql中用limit代替),
排序不生效,再次修改:
SELECT * from
(SELECT name FROM student
ORDER BY age limit 0, 1000) t1
UNION (all)
SELECT * from
(SELECT grade FROM student
ORDER BY age limit 0, 1000);
成功!!!
最後,union和union all的差別是前者會忽略重複數據,後者不會。