UNION ALL 具有不同数量的列

问题描述 投票:0回答:3

使用

UNION ALL
进行具有不同列数返回的查询:

sqlite3.OperationalError:UNION ALL 左侧和右侧的 SELECT 没有相同数量的结果列。

这个不起作用。

UNION
UNION ALL
都不起作用。 这个我不明白。如何获得带有
Null
的专栏? 我不知道用户创建的列的数量和表的名称。要查找我使用的表格:

SELECT name FROM sqlite_master WHERE type='table';

要查找我使用的列名称:

[i[0] for i in cursor.description]
sql sqlite
3个回答
0
投票

很简单,并集每一侧的列大小和类型必须相同。

您可以通过将列转换为正确的类型或将缺失的列设置为 NULL 来使它们相同。


0
投票

我认为您只需要通过添加“空”列来补偿缺失的列。

CREATE TABLE test_table1(k INTEGER, v INTEGER);
CREATE TABLE test_table2(k INTEGER);

INSERT INTO test_table1(k,v) VALUES(4, 5);
INSERT INTO test_table2(k) VALUES(4);

SELECT * FROM test_table1 UNION ALL SELECT *,'N/A' FROM test_table2;
4|5
4|N/A

这里我添加了另一个带有“N/A”的伪列,因此

test_table2
在 UNION ALL 发生之前有两列。


0
投票

SQLite 选择具有表的所有列结构的空行

我有一个解决方案,创建一行,所有列都填充为 NULL。 您可以填写您已经知道的列并将其他列保留为 NULL,然后将其 UNION 到另一列。

© www.soinside.com 2019 - 2024. All rights reserved.