将 2 个表合并到不相等列的查询中
Merge 2 tables into a query on unequal column
我有 2 个表,都有一个 TIMESTAMP 列
我想显示合并在一起的 table 的所有行,并按此 TIMESTAMP 列排序。
table 中的任何行都不太可能具有完全相同的 TIMESTAMP 值。
我该怎么做?
为简单起见,例如:
- TABLEA - 列 ID、时间戳、COLXYZ、COLZZZ
- TABLEB - 列 ID、时间戳、COLABC、COLDEF、COLGHI
想要:
结果 - 列 ID、时间戳、COLXYZ、COLZZZ、COLABC、COLDEF、COLGHI
按时间戳升序排列
如果有一些通配符方法可以在不指定其他列的情况下做到这一点,那会更好(我的意思是通配符从 tables 中获取所有列)
一个简单的 union all 就足够了。只需用空值填充每个 table 上缺失的列。
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;
我真的看不出有什么方法可以避免拼出每个 table 的列名。
我有 2 个表,都有一个 TIMESTAMP 列
我想显示合并在一起的 table 的所有行,并按此 TIMESTAMP 列排序。
table 中的任何行都不太可能具有完全相同的 TIMESTAMP 值。
我该怎么做?
为简单起见,例如:
- TABLEA - 列 ID、时间戳、COLXYZ、COLZZZ
- TABLEB - 列 ID、时间戳、COLABC、COLDEF、COLGHI
想要:
结果 - 列 ID、时间戳、COLXYZ、COLZZZ、COLABC、COLDEF、COLGHI
按时间戳升序排列
如果有一些通配符方法可以在不指定其他列的情况下做到这一点,那会更好(我的意思是通配符从 tables 中获取所有列)
一个简单的 union all 就足够了。只需用空值填充每个 table 上缺失的列。
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;
我真的看不出有什么方法可以避免拼出每个 table 的列名。