我对SQL很新,我不确定这是否可行,但正如标题所示我希望将查询结果合并到一个"实体"之后我可以插入另一张表。 这是一个例子:
SELECT COLUMN1
FROM TABLE1
让我们说输出是这样的:
COLUMN1
-------
data1
data2
data3
我想要做的是获取此查询的结果并将其转换为:
data1,data2,data3
然后我可以将其作为一行插入到另一个表中:
INSERT INTO TABLE2(RESULT)
VALUES ('data1,data2,data3')
答案 0 :(得分:1)
您可以使用GROUP_CONCAT
获取所有列值的列表:
SELECT GROUP_CONCAT(COLUMN1 SEPARATOR ',') FROM TABLE1
要直接INSERT
此SELECT
的结果,您可以使用以下内容:
INSERT INTO TABLE2 SELECT GROUP_CONCAT(COLUMN1 SEPARATOR ',') FROM TABLE1
您还可以使用VIEW
来保持表格规范化:
CREATE VIEW V_TABLE1 AS SELECT GROUP_CONCAT(COLUMN1 SEPARATOR ',') FROM TABLE1;
VIEW
的优势在于它始终是从表格的当前值生成的。
... 但要小心:在评论中,如marc_s already mentioned那样,建议不要将多个值作为列表存储在一个列中。您应该始终设计规范化数据库。
答案 1 :(得分:0)
你需要的是一个聚合函数,比如postgresql中的string_agg,就像SELECT string_agg(COLUMN1,',')FROM TABLE1;
当然可以将它与INSERT结合使用,即INSERT ... SELECT。