Я пытаюсь обновить таблицу из другой таблицы
Мне нужно обновить 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'
Спасибо,
вам нужно 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
Легкий способ достижения требуемого результата заключается в следующем:
На основе ваших данных стартовые таблицы
а также
Если вы запустите запрос
UPDATE table1, changeip
SET table1.IP = changeIP.old_IP
WHERE table1.SIM = changeip.SIM_Number
Результат следующий:
Я считаю, что это желаемый результат. В большинстве вышеприведенных предложений отсутствует предложение WHERE в инструкции UPDATE, и поэтому они терпят неудачу.
Это должно работать, если вы хотите обновить те, у которых есть 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
);
ALTER table1 MODIFY IP varchar(20) null;
изменить столбец от нуля до нуля, если другая таблица содержит нулевые значения