SQL是否可以在保留元数据的同时将多个时间列分类为一个?

时间:2018-10-25 06:04:37

标签: mysql sql database sorting select

我有一个SQL数据库表,该表有四列不同的时间。我希望能够对它们进行排序,以便可以将a,b,c和d时间戳中的每一个合并到一个列中,同时保留id和元数据。

empMap.values()

在上面的示例中,我希望得到以下结果:

enter image description here

2 个答案:

答案 0 :(得分:4)

您可以在不同时间在多个查询之间进行union

(SELECT id, a_time AS time, metadata1, metadata2
 FROM   mytable)
UNION
(SELECT id, b_time AS time, metadata1, metadata2
 FROM   mytable)
UNION
(SELECT id, c_time AS time, metadata1, metadata2
 FROM   mytable)
UNION
(SELECT id, d_time AS time, metadata1, metadata2
 FROM   mytable)
ORDER BY time

答案 1 :(得分:2)

您要取消透视您的数据。 MySQL对此没有太多内置支持,但是ANSI的实现方式是使用UNION

SELECT id, a_time AS time, metadata1, metadata2 FROM yourTable
UNION ALL
SELECT id, b_time, metadata1, metadata2 FROM yourTable
UNION ALL
SELECT id, c_time, metadata1, metadata2 FROM yourTable
UNION ALL
SELECT id, d_time, metadata1, metadata2 FROM yourTable
ORDER BY time;

enter image description here

Demo