MySQL копировать данные из таблицы в другую с тем же значением?

0

Я пытаюсь обновить таблицу из другой таблицы

Мне нужно обновить IP в таблице1 из new_IP в таблице changeip в соответствии с номером SIM (который одинаковый на обеих таблицах)

Я пытаюсь сделать это из того, что он говорит здесь: столбец обновления mysql со значением из другой таблицы

I get error "IP can't be null"

это то, что я написал в командной строке

    UPDATE table1 
SET table1.IP = (
    SELECT changeip.New_IP 
    FROM changeip
    WHERE table1.SIM_NEW = changeip.SIM_Number 
);

Что я делаю неправильно?

****************Обновить

это таблица1

'10.226.202.169 ',' 8997250000031944123 '

'10.226.202.170 ',' 8997250000031944131 '

'10.226.202.173 ',' 8997250000031944164 '

'10.136.136.101 ',' 8997250400019201597 '

'10.136.136.102 ',' 8997250400019201589 '

'10.136.136.103 ',' 8997250400019201571 '

'10.136.136.104 ',' 8997250400019201563 '

и так далее........

это таблица changeip

'10.226.202.169 ',' 8997250000031944123 ', '10.136.137.221'

'10.226.202.170 ',' 8997250000031944131 ', '10.136.137.222'

'10.226.202.173 ',' 8997250000031944164 ', '10.136.137.223'

'10.226.202.174 ',' 8997250000031944172 ', '10.136.137.224'

'10.226.202.175 ',' 8997250000031944180 ', '10.136.137.225'

'10.226.202.177 ',' 8997250000031944206 ', '10.136.137.226'

Спасибо,

  • 1
    table1.IP должен быть нулевым, изменить столбец с ненулевого на нулевой. Так как changeip.New_IP содержит нулевые значения
  • 0
    Кажется, это также опечатка, "ГДЕ table1.SIM_NEW = hangeip.SIM_Number"
Показать ещё 2 комментария
Теги:
database

4 ответа

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

вам нужно join и update

 UPDATE table1 t
    inner join changeip p
    on t.SIM_NEW= p.SIM_Number
   and t.IP=p.old_ip
    SET t.IP =p.New_IP
  • 0
    когда я запускаю это - я не получаю никакой ошибки, но это ничего не обновляет ....
  • 0
    @ David12123 can.you, пожалуйста, поделитесь данными обеих таблиц, потому что они должны работать
Показать ещё 18 комментариев
0

Легкий способ достижения требуемого результата заключается в следующем:

На основе ваших данных стартовые таблицы

Изображение 174551

а также

Изображение 174551

Если вы запустите запрос

UPDATE table1, changeip 
  SET table1.IP = changeIP.old_IP 
  WHERE table1.SIM = changeip.SIM_Number

Результат следующий:

Изображение 174551

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

0

Это должно работать, если вы хотите обновить те, у которых есть IP- changeip таблице changeip и changeip те, у которых нет нового IP- changeip со старым IP-адресом:

UPDATE table1 
SET table1.IP = (
    SELECT changeip.New_IP 
    FROM changeip
    WHERE table1.SIM_NEW = hangeip.SIM_Number 
    AND hangeip.New_IP IS NOT NULL
);
  • 0
    Я получаю эту ошибку: Код ошибки: 1048. Столбец «IP» не может быть пустым. , который не может быть из-за всей таблицы 1. IP внутри есть данные - я заменяю старый IP новым IP.
0
ALTER table1 MODIFY IP varchar(20) null;

изменить столбец от нуля до нуля, если другая таблица содержит нулевые значения

Ещё вопросы

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