我有一个SQL数据库表,该表有四列不同的时间。我希望能够对它们进行排序,以便可以将a,b,c和d时间戳中的每一个合并到一个列中,同时保留id和元数据。
empMap.values()
在上面的示例中,我希望得到以下结果:
答案 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;