将GROUP BY结果插入另一个表中

时间:2009-11-18 02:24:07

标签: sql mysql

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

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

由于选择产生多行,导致错误。

这样做的正确方法是什么?

5 个答案:

答案 0 :(得分:18)

如果我理解正确,你需要类似的东西:

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

答案 1 :(得分:6)

或者,如果我正确理解你,并且你想在新表中为旧表中的每个不同的条形值输入一个条目,我认为这会使它更清晰一点。

INSERT INTO foo (col2name) SELECT DISTINCT bar FROM baz

执行计划和表现应该类似

答案 2 :(得分:4)

您可以尝试:

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

答案 3 :(得分:4)

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

答案 4 :(得分:4)

与Michael的回答一致,另一种可能性是

INSERT INTO foo (col2name) SELECT bar FROM baz GROUP BY bar

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