Sql 将两个表合并到不相等列上的查询中

Sql 将两个表合并到不相等列上的查询中,sql,h2,Sql,H2,我有两个表,都有一个TIMESTAMP列 我想显示合并在一起的两个表的所有行,按时间戳列排序 这两个表中不太可能有任何行具有完全相同的时间戳值 我该怎么做 为简单起见,例如: 表A-列ID、时间戳、COLXYZ、COLZZZ 表B-列ID、时间戳、COLABC、COLLEF、COLGHI 想要: 结果-列ID、时间戳、COLXYZ、COLZZZ、COLABC、COLDEF、COLGHI 按时间戳升序排序 如果有某种通配符方法可以在不指定其他列的情况下执行此操作,那就更好了(我的意思是使用通配

我有两个表,都有一个TIMESTAMP列

我想显示合并在一起的两个表的所有行,按时间戳列排序

这两个表中不太可能有任何行具有完全相同的时间戳值

我该怎么做

为简单起见,例如:

  • 表A-列ID、时间戳、COLXYZ、COLZZZ
  • 表B-列ID、时间戳、COLABC、COLLEF、COLGHI
想要:

结果-列ID、时间戳、COLXYZ、COLZZZ、COLABC、COLDEF、COLGHI

按时间戳升序排序


如果有某种通配符方法可以在不指定其他列的情况下执行此操作,那就更好了(我的意思是使用通配符从表中获取所有列)

一个简单的union all就足够了。然后用空值填充每个表中缺少的列

SELECT ID, TIMESTAMP, COLXYZ, COLZZZ, NULL AS COLABC, NULL AS COLDEF, NULL AS COLGHI
FROM TABLEA
UNION ALL
SELECT ID, TIMESTAMP, NULL, NULL, COLABC, COLDEF, COLGHI
FROM TABLEB
ORDER BY TIMESTAMP;

我真的看不出有什么方法可以避免您必须拼出每个表的列名。

一个简单的union all应该就足够了。然后用空值填充每个表中缺少的列

SELECT ID, TIMESTAMP, COLXYZ, COLZZZ, NULL AS COLABC, NULL AS COLDEF, NULL AS COLGHI
FROM TABLEA
UNION ALL
SELECT ID, TIMESTAMP, NULL, NULL, COLABC, COLDEF, COLGHI
FROM TABLEB
ORDER BY TIMESTAMP;

我真的看不出有什么方法可以避免拼写每个表的列名。

您使用的是哪种DBMS?博士后?Oracle?您使用的是哪种数据库管理系统?博士后?Oracle?您确定orderby同时应用于这两个表吗?是的,在进行联合之前应用排序是没有意义的。谢谢-需要键入一点,表中的列比示例中的多,但我会按照您的建议执行。您确定orderby同时应用于这两个表吗?是的,在进行联合之前应用排序是没有意义的。谢谢-需要键入一些内容,表中的列比示例中的要多,但我会按照您的建议执行