将查询结果合并到一个逗号分隔的条目中

时间:2017-10-11 16:52:07

标签: mysql sql

我对SQL很新,我不确定这是否可行,但正如标题所示我希望将查询结果合并到一个"实体"之后我可以插入另一张表。 这是一个例子:

SELECT COLUMN1
FROM TABLE1

让我们说输出是这样的:

COLUMN1
-------
data1
data2
data3

我想要做的是获取此查询的结果并将其转换为:

data1,data2,data3

然后我可以将其作为一行插入到另一个表中:

INSERT INTO TABLE2(RESULT)
VALUES ('data1,data2,data3')

2 个答案:

答案 0 :(得分:1)

您可以使用GROUP_CONCAT获取所有列值的列表:

SELECT GROUP_CONCAT(COLUMN1 SEPARATOR ',') FROM TABLE1
  

演示: http://sqlfiddle.com/#!9/3cf4ecc/5/0

要直接INSERTSELECT的结果,您可以使用以下内容:

INSERT INTO TABLE2 SELECT GROUP_CONCAT(COLUMN1 SEPARATOR ',') FROM TABLE1
  

演示: http://sqlfiddle.com/#!9/466869/1/1

您还可以使用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。