将列转换为行

时间:2013-12-16 23:43:54

标签: mysql row

我有一个包含2列的表,第一个显示问题,然后第二个显示答案

看起来像这样

Question | Answer
    Q1   |  Ans1
    Q2   |  Ans2
    Q3   |  Ans3

我希望它看起来像这样

Q1
Ans1

Q2
Ans2

Q3
Ans3

这是最好的方法吗?

以下是示例数据http://sqlfiddle.com/#!2/cef08/2

谢谢!

1 个答案:

答案 0 :(得分:0)

我想知道你为什么要这样做。无论如何,以下查询工作正常。

SELECT *
FROM (
    SELECT CONCAT('Q:', q_id, ':1') AS orders, question
    FROM question WHERE q_id IN (1, 2, 3)

    UNION ALL

    SELECT CONCAT('Q:', q_id, ':2') AS orders, answer
    FROM answer WHERE q_id IN (1, 2, 3)
) x
ORDER BY orders;

+--------+----------+
| orders | question |
+--------+----------+
| Q:1:1  | Q1       |
| Q:1:2  | Ans1     |
| Q:2:1  | Q2       |
| Q:2:2  | Ans2     |
| Q:3:1  | Q3       |
| Q:3:2  | Ans3     |
+--------+----------+

注意我认为如果客户端可以转换查询结果,那么sqlfiddle中的JOIN查询优于此UNION。