有没有一种方法可以在保留元数据的同时将多个时间列排序为一个时间列?

azpvetkf  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(286)

我有一个sql数据库表,它有四个不同时间的列。我希望能够以这样一种方式对它们进行排序:我可以将a、b、c和d时间戳合并到一列中,同时保留id和元数据。

id | a_time | b_time | c_time | d_time | metadata1 | metadata2
1  | 8      | 7      | 2      | 4      | a         | b
2  | 6      | 1      | 12     | 10     | c         | d
3  | 5      | 9      | 3      | 11     | e         | f

在上面的例子中,我想要一些结果:

omjgkv6w

omjgkv6w1#

您正在查找取消打印数据。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;

演示

92dk7w1h

92dk7w1h2#

你可以的 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

相关问题