sql - 连接表 (UNION ALL) 其中一个表缺少其中一列

标签 sql database sqlite

我正在尝试将 SQLite 数据库中的三个表组合成一个新的组合表。这三个表具有相同的列名,但第三个表缺少其中一列。这是我正在尝试的方式:

CREATE TABLE cobmined
AS
SELECT col1, col2, col3
FROM
   (
     SELECT col1, col2, col3 from table1
     UNION ALL
     SELECT col1, col2, col3 from table2
     UNION ALL
     SELECT col1, col2       from table3
    ) s
;

这仅在前两个表上执行此操作时有效,在添加第三个表时我收到消息:

SELECTs to the left and right of UNION do not have the same number of result columns

有没有办法让 SQL 忽略丢失的列并在需要时将其保留为 NULL?

最佳答案

给第三张表添加一个NULL值

CREATE TABLE cobmined
AS
SELECT col1, col2, col3
FROM
   (
     SELECT col1, col2, col3 from table1
     UNION ALL
     SELECT col1, col2, col3 from table2
     UNION ALL
     SELECT col1, col2, null from table3
    ) s
;

另外,不需要子查询

CREATE TABLE cobmined
AS
SELECT col1, col2, col3 from table1
UNION ALL
SELECT col1, col2, col3 from table2
UNION ALL
SELECT col1, col2, null from table3

关于sql - 连接表 (UNION ALL) 其中一个表缺少其中一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40695414/

相关文章:

php - 针对另一列的每个成员搜索一列

mysql - 查询将键 -> 值表提取到柱状表

mysql - 优化 MySql 查询?

php - 如何加密网站的用户登录密码

mysql - SQL 用条件区分列

ios - 编写 sql 查询以首先将日期字符串转换为日期并执行与当前日期的匹配

sql - UNIQUE 约束,但仅当 column = 某物时

python - 如何使用 Python 在 Sqlite3 中记录查询?

java - SQL错误 参数太少

MySQL 工作台 : What is the foreign key relationship between child and parent tables?