2009-11-18 2 views
4

Я переносил поле в новую таблицу. В новой таблице есть три поля. То, что я пробовал, былоВставка результата GROUP BY в другую таблицу

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

Это привело к ошибке из-за нескольких строк в результате выбора.

Каков правильный способ сделать это?

ответ

15

Если я вас правильно понял, вы хотите что-то вроде:

INSERT INTO foo (col1name, col2name, col3name) 
    SELECT '', bar, '' 
    FROM baz 
    GROUP BY bar 
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

Идущий с ответом Майкла, еще одна возможность будет

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

где col1 и col3 равны d чтобы по умолчанию была пустая строка.

6

Или, если я правильно понимаю вас и вы хотите, чтобы одна запись в новой таблице для каждого отдельного значения столбца в старой таблице, я думаю, это делает это немного понятнее.

INSERT INTO foo (col2name) SELECT DISTINCT bar FROM baz 

План выполнения и производительность должна быть похож

+0

+1 для успешного ручной оптимизации! –

+0

Утонченное и элегантное решение – zeeshan

Смежные вопросы