[英]MySql: Preserving order in UNION ALL result
我有以下內容:
with
result1 as ( select column1 from table1 order by ... )
result2 as ( select column1 from table2 order by ... )
select * from result1 union all select * from result2;
目的是列出保留順序的result1
,然后列出保留順序的result2
。 但是, union all
似乎並沒有保留其操作數表的順序。 我怎樣才能達到預期的效果? 我已經嘗試將列添加到有序的result1
和result2
,然后在這個添加的列上對聯合結果進行排序,但這對於看起來非常典型的東西來說似乎非常笨拙。 有沒有像union all ordered
這樣的東西?
行。 以下是您如何使用“窗口函數”對其進行排序。 前提是你用的是MySQL 8+
with
result1 as (
select column1, ROW_NUMBER() OVER (ORDER BY ...) AS rownum1, 0 AS rownum2,
from table1 order by ...
),
result2 as (
select column1, 0 AS rownum1, ROW_NUMBER() OVER (ORDER BY ...) AS rownum2
from table2 order by ...
),
result as (
select * from result1
union all
select * from result2
)
select * from result order by rownum2, rownum1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.