2017-06-08 29 views
1

私は2つのクエリの間でMySQLでユニオンクエリを作成しようとしています。しかし、それぞれのクエリは異なるフィールドで順序付けされているため、1つのクエリで両方のクエリが必要です。それは可能ですか?UNIONクエリのフィールドの順序

例えば、私はこのテーブルを持っている:

table 

------ 
A | B 
------ 
1 | 3 
------ 
2 | 2 
------ 
3 | 1 

私はこのクエリを試してみました:

(SELECT A, B) 
    FROM table 
    ORDER BY A) 
UNION 
(SELECT A, B) 
    FROM table 
    ORDER BY B) 

そして、私はこのような何かを取得したい:

A | B 
------ 
1 | 3 
------ 
2 | 2 
------ 
3 | 1 
------ 
3 | 1 
------ 
2 | 2 
------ 
1 | 3 

をしかし、 、その代わりに、私はこのような注文なしで両方のクエリの和集合を得る:

A | B 
------ 
1 | 3 
------ 
2 | 2 
------ 
3 | 1 
------ 
1 | 3 
------ 
2 | 2 
------ 
3 | 1 

どうすればよいですか?もちろん、私は両方のクエリを別々に行うと動作しますが、同じクエリでそれらを必要とします。

+0

質問が満足に答えられると、それは – Strawberry

答えて

2

ユニオンの各辺をトラッキングする追加の列を導入し、必要に応じて使用することができます。

SELECT t.A, t.B 
FROM 
(
    SELECT A, B, 'A' AS source 
    FROM yourTable 
    UNION ALL 
    SELECT A, B, 'B' 
    FROM yourTable 
) t 
ORDER BY 
    t.source, 
    CASE WHEN t.source = 'A' THEN A ELSE B END 

出力:ここ

enter image description here

デモ:

Rextester

+0

は非常にありがとうその答えを受け入れるために便利です多く!出来た! –