[英]Sort order of each select statement in a mysql union
我在聯合聲明中選擇的排序順序有些問題。 我想對每個 select 進行排序,就像名稱的第一名和 id 的第二名一樣。
(SELECT
id,
name
FROM
table1
WHERE
active=1
ORDER BY name)
UNION
(SELECT
id,
name
FROM
table2
WHERE
active=1
ORDER BY id)
如果沒有 where 子句,一切都可以正常工作,但這對於我的查詢是必要的。 我如何為每個 select 做不同的排序?
表格1:
ID | 姓名 |
---|---|
1 | 第一的 |
3 | 第二 |
2 | 第三 |
表2:
ID | 姓名 |
---|---|
1 | 第一1 |
2 | 第二1 |
3 | 第三1 |
結果表1+表2:
ID | 姓名 |
---|---|
1 | 第一的 |
3 | 第二 |
2 | 第三 |
1 | 第一1 |
2 | 第二1 |
3 | 第三1 |
嘗試這個:
Select id,name from
(
Select * from (
SELECT
t.id,
t.name,
@rownum := @rownum + 1 as row_number
FROM
test t
cross join (select @rownum := 0) r
WHERE
t.active=1
order by t.name ) tbl1
union all
select * from
(
SELECT
t.id,
t.name,
@rownum := @rownum + 1 as row_number
FROM
test2 t
cross join (select @rownum := 0) r
WHERE
t.active=1
order by t.id
) tbl2
) x order by row_number
你應該使用union all
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.