Перенос данных в базе данных MySQL из одной таблицы в другую с помощью оператора SQL

0

Я объединил объединенную таблицу с ее связанной сущностью, поскольку это отношение было взаимно однозначным.

Итак, теперь в исходной таблице ww_staff содержатся данные ww_contacts.

Я написал следующий оператор, основанный на том, что я считаю логичным с точки зрения MySQL

но - его не доволен.

Может ли кто-нибудь увидеть подобное решение или явное нарушение?

INSERT INTO 
  ww_staff s 
  (phone, mobile, email, skype) 
VALUES 
(
  SELECT w.phone, w.mobile, w.email, w.skype 
  FROM ww_contacts w
  JOIN ww_staff s
  ON s.staff_ID = w.contacts_ID
);
  • 0
    Кто не счастлив?
  • 0
    ха, ха - "мой" sql конечно :) - до сих пор не кстати.
Показать ещё 1 комментарий
Теги:
insert-select

2 ответа

0
Лучший ответ

Вам нужно сделать оператор INSERT ... SELECT ... ON DUPLICATE KEY UPDATE. Это добавит новые строки и обновит существующие:

INSERT INTO 
  ww_staff
  (staff_ID, phone, mobile, email, skype) 
SELECT w.contacts_ID, w.phone, w.mobile, w.email, w.skype 
  FROM ww_contacts w
  JOIN ww_staff s
  ON s.staff_ID = w.contacts_ID
ON DUPLICATE KEY UPDATE
 ww_staff.phone = w.phone, ww_staff.mobile = w.mobile, ww_staff.email = w.email, ww_staff.skype = w.skype
2

Просто удалите значение VALUES()

INSERT INTO ww_staff s (phone, mobile, email, skype) 
SELECT w.phone, w.mobile, w.email, w.skype FROM ww_contacts w
JOIN ww_staff s
ON s.staff_ID = w.contacts_ID;

- UPDATE

Поскольку вы выбираете из ww_contacts w JOIN ww_staff - все записи уже есть - и вы не хотите вставлять дубликаты, используйте обновление с соединением:

UPDATE ww_staff s JOIN ww_contacts w ON s.staff_ID = w.contacts_ID
SET s.phone = w.phone, s.mobile = w.mobile, s.email = w.email, s.skype = w.skype;

В следующий раз, пожалуйста, объясните больше в своем вопросе, что вы пытаетесь сделать.

  • 0
    Неожиданные результаты! - Кажется, я не могу добавить эти поля (телефон, мобильный, электронная почта, Skype) к существующим записям (staff_ID) - записи дублируются каждый раз с новым staff_ID. Кто-нибудь знает почему?
  • 0
    каждый раз, когда вы запускаете запрос, вы дублируете таблицу. что вы пытаетесь сделать ???
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню