我试图在两个查询之间在MySQL中进行联合查询。但是,每个查询都按不同的字段排序,我只需要在一个查询中进行查询。这可能吗?
例如,我有这张表:
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 :(得分: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
<强>输出:强>
在这里演示: