MySQL специальный оператор INSERT / SELECT, необходимый для обновления при копировании строк в таблице - PullRequest
1 голос
/ 28 января 2012
table a:   column type, column type_id, column_owner, column_data1, column_data2, and so on
           -----------  --------------  ------------  ------------  ------------
           'type a'      43             'owner sally' 'dfawerfd'    'yiyiyitit'
           'type b'      51             'owner sally' 'hufvgdfd'    'weysdgjed'
           'type c'      77             'owner sally' '3fdfsetr'    '4tgfgert4'



table b:   column type, column type_id, column_owner
           -----------  --------------  ------------
           'type a'      43             'owner sally'
           'type b'      51             'owner sally'
           'type c'      77             'owner sally'

           'type a'     100             'owner harry'
           'type b'     111             'owner harry'
           'type c'     150             'owner harry'

Помощь, необходимая для разработки одного магического оператора SQL для вставки новых строк в таблицу a, которые являются копиями строк в таблице a, где a.column_owner = 'owner sally'; и для каждой новой вставленной записи все значения столбцов должны быть скопированы, но a.column_owner должен быть установлен на «владельца Гарри», а a.type_id должен быть установлен на b.type_id, где a.type == b.type и b.column_owner = = 'владелец Гарри'.

Итак, новая таблица a будет выглядеть так:

table a:   column type, column type_id, column_owner, column_data1, column_data2, and so on
           -----------  --------------  ------------  ------------  ------------
           'type a'      43             'owner sally' 'dfawerfd'    'yiyiyitit'
           'type b'      51             'owner sally' 'hufvgdfd'    'weysdgjed'
           'type c'      77             'owner sally' '3fdfsetr'    '4tgfgert4'
           'type a'      100            'owner harry' 'dfawerfd'    'yiyiyitit'
           'type b'      111            'owner harry' 'hufvgdfd'    'weysdgjed'
           'type c'      150            'owner harry' '3fdfsetr'    '4tgfgert4'

У меня есть 13 000+ записей в таблице для копирования / обновления, одна команда sql, если это возможно, будет очень благодарна.

Я с нетерпением жду помощи сообщества здесь, спасибо!

1 Ответ

0 голосов
/ 28 января 2012

Невозможно заранее узнать, удовлетворяет ли это всем вашим 13.000 записям, но для приведенного вами примера следующее заявление поможет.

Суть запроса в

  • JOIN обе таблицы по column_type
  • SELECT соответствующие поля из каждой таблицы
  • INSERT эти записи в tableA

Оператор SQL

INSERT  INTO tableA
SELECT  a.column_type
        , b.column_type_id
        , b.column_owner
        , a.column_data1
        , a.column_data2
FROM    tableA a
        INNER JOIN tableB b ON b.column_type = a.column_type
WHERE   b.column_owner = 'owner harry'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...