簡體   English   中英

mysql 聯合中每個 select 語句的排序順序

[英]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

https://www.db-fiddle.com/f/dzBHKuzGmaQC8EmyuWcH2Y/2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM