使用
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]
很简单,并集每一侧的列大小和类型必须相同。
您可以通过将列转换为正确的类型或将缺失的列设置为 NULL 来使它们相同。
我认为您只需要通过添加“空”列来补偿缺失的列。
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 发生之前有两列。
我有一个解决方案,创建一行,所有列都填充为 NULL。 您可以填写您已经知道的列并将其他列保留为 NULL,然后将其 UNION 到另一列。