创建一个表,其中的列名从单列查询结果中动态检索

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

我有一个返回单列的选择查询。 sqlite 有没有办法使用结果作为列名来创建新表?

我尝试查询但没有成功。

CREATE TABLE newTable (SELECT nameCol FROM oldTable);

这个样本

CREATE TABLE Foo FROM (SELECT "col_a, col_b, col_c")
-- or this
CREATE Table Foo FROM (SELECT 'col_a, col_b, col_c')

导致同样的错误

执行完成,但有错误。结果:“FROM”附近:语法错误 第 1 行:创建表 Foo FROM

database sqlite create-table group-concat dynamic-columns
1个回答
2
投票

SQLite 不支持动态 SQL,所以这是不可能的。

您能做的最好的事情就是使用您喜欢的编程语言构建可用于创建表的 SQL 语句:

SELECT 'CREATE TABLE newTable (' ||
       (SELECT GROUP_CONCAT(nameCol) FROM oldTable) ||
       ');' AS sql;

上面的查询返回 1 行 1 列,字符串如下:

CREATE TABLE newTable (column1,column2,column3);

查看简化的演示

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