MySQL在两个不同的表上按时间顺序排列

时间:2013-11-22 10:41:44

标签: mysql sql

考虑我有以下两个表(粗略草图):

表1:

  • t1Id(Int,Primary Key)
  • 时间(日期时间)
  • ATTRIBUTE1
  • attribute2
  • attribute3

表2:

  • t2Id(Int,Primary Key)
  • 时间(日期时间)
  • attribute4
  • attribute5

假设我想从两个表中选择结果并按time排序,这是可行的吗?我本人以为这是可能的,如果:

  • 您可以创建一个包含两个表的所有列的联合,但time通过联合共享。
  • NULL值在不匹配的地方。例如,此联合中的表1中的一行在t2Id,attribute4和attribute5中将具有NULL
  • 一个额外的列,指示原始行(没有NULL值的行)源自哪个表。

我如何以最有效的方式设计这样的查询?

1 个答案:

答案 0 :(得分:1)

SELECT * FROM (
   SELECT t1Id,time , attribute1,attribute2,attribute3 FROM table1 
   UNION ALL
   SELECT t2Id ,time , attribute3,attribute4,"" FROM table2  
)AA
ORDER BY AA.time