выполнять пакетное обновление при использовании единого SQL-запроса [duplicate]

Какую кодировку символов вы используете? Некоторые наборы символов (например, UTF-16 и т. Д.) Используют более одного байта на символ.

38
задан verheesj 12 September 2012 в 19:52
поделиться

6 ответов

UPDATE TABLE2
       JOIN TABLE1
       ON TABLE2.SERIAL_ID = TABLE1.SUBST_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID;
92
ответ дан Tom 17 August 2018 в 12:06
поделиться

Вы также можете использовать это:

update TABLE1 set BRANCH_ID = ( select BRANCH_ID from TABLE2 where TABLE1.SUBST_ID = TABLE2.SERIAL_ID)

, но с моим опытом я могу сказать, что этот способ настолько медленный и не рекомендуется!

0
ответ дан Abadis 17 August 2018 в 12:06
поделиться

Использование INNER JOIN:

UPDATE TABLE1
INNER JOIN TABLE2 ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID;

Другое альтернативное решение, как показано ниже: Здесь я использую предложение WHERE вместо JOIN

UPDATE 
    TABLE1,
    TABLE2
WHERE
    TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET 
    TABLE2.BRANCH_ID = TABLE1.CREATED_ID;
2
ответ дан Faisal 17 August 2018 в 12:06
поделиться
UPDATE TABLE2
       JOIN TABLE1
       ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID 
WHERE TABLE2.BRANCH_ID IS NULL or TABLE2.BRANCH_ID='';
2
ответ дан Pang 17 August 2018 в 12:06
поделиться
  • 1
    Не могли бы вы подробнее рассказать о своем ответе, добавив немного подробного описания вашего решения? – abarisone 26 May 2015 в 06:29
  • 2
    используя join на subset_Id и Serial_Id, вы получите результат set.and, что набор результатов будет содержать созданный идентификатор. Теперь сконцентрируйтесь на запросе после SET там, мы фактически присваиваем или предоставляем значения из created_Id в Branch_Id .... надеюсь, что вы понимаете .. :) – Mohammad Imran 24 July 2015 в 06:24

В дополнение к ответу Тома, если вам нужно повторить операцию часто и хотите сэкономить время, вы можете сделать:

UPDATE TABLE1
       JOIN TABLE2
       ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID
WHERE TABLE2.BRANCH_ID IS NULL
13
ответ дан RafaSashi 17 August 2018 в 12:06
поделиться

Я думаю, что это должно работать

UPDATE secondTable
JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID
SET BRANCH_ID = CREATED_ID
2
ответ дан Faisal 17 August 2018 в 12:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: