我正在將字段遷移到新表中。新表格有三個字段。我試過的是將GROUP BY結果插入到另一個表中
INSERT INTO foo VALUES ('', (SELECT bar FROM baz GROUP BY bar), '');
這樣做會導致錯誤,因爲select導致了多行。
這樣做的正確方法是什麼?
我正在將字段遷移到新表中。新表格有三個字段。我試過的是將GROUP BY結果插入到另一個表中
INSERT INTO foo VALUES ('', (SELECT bar FROM baz GROUP BY bar), '');
這樣做會導致錯誤,因爲select導致了多行。
這樣做的正確方法是什麼?
如果我理解正確的話,你想要的東西,如:
INSERT INTO foo (col1name, col2name, col3name)
SELECT '', bar, ''
FROM baz
GROUP BY bar
你可以試試:
INSERT INTO foo
SELECT '',bar,'' FROM baz GROUP BY bar
INSERT INTO foo (fieldName1,fieldName2,fieldName3)
SELECT '',bar,'' FROM baz GROUP BY bar
與邁克爾的回答去,另一種可能性是
INSERT INTO foo (col2name) SELECT bar FROM baz GROUP BY bar
其中col1和col3是d被定義爲具有空字符串的缺省值。
或者,如果我正確地理解了你,並且你希望在舊錶格中爲每個不同的條形值添加一個條目,我認爲這會使得這一點更加清晰。
INSERT INTO foo (col2name) SELECT DISTINCT bar FROM baz
執行計劃和性能應similiar
+1成功的人工優化! – 2009-11-18 02:54:25
整潔優雅的解決方案 – zeeshan 2016-03-22 14:02:53