将GROUP BY的结果插入到另一张表中

9

我正在将一个字段迁移到一个新的表中。新的表有三个字段。我尝试的是

INSERT INTO foo VALUES ('', (SELECT bar FROM baz GROUP BY bar), '');

由于选择操作返回多行结果,导致出现错误。

正确的方法是什么?

6个回答

21

如果我理解你的意思正确,你想要类似这样的东西:

INSERT INTO foo (col1name, col2name, col3name)
    SELECT '', bar, ''
    FROM baz
    GROUP BY bar

7
如果我理解正确,您希望在新表中为旧表中每个不同的bar值创建一个条目,那么我认为这可以使其更清晰一些。
INSERT INTO foo (col2name) SELECT DISTINCT bar FROM baz

执行计划和性能应该是相似的。


简洁而优雅的解决方案 - zeeshan

4

您可以尝试:

INSERT INTO foo 
SELECT '',bar,'' FROM baz GROUP BY bar

4
INSERT INTO foo (fieldName1,fieldName2,fieldName3) 
    SELECT '',bar,'' FROM baz GROUP BY bar

4
跟随Michael的回答,另一个可能性是:
INSERT INTO foo (col2name) SELECT bar FROM baz GROUP BY bar

其中col1和col3被定义为默认为空字符串。


0
插入到personinsure表中(列名) 选择(列名)从personinsure表中 其中yearmonth_fld=202205且id_fld在(选择max(id_fld) from personinsure表中 其中yearmonth_fld=202205 按personId分组)

由于目前的描述不够明确,请编辑以添加更多细节,以帮助他人理解如何回答问题。您可以在帮助中心中找到有关如何撰写良好答案的更多信息。 - Community
根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,以帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接