mysql是否将数据从表复制到另一个具有相同值的表?

nkkqxpd9  于 2021-06-23  发布在  Mysql
关注(0)|答案(4)|浏览(321)

我正在尝试从另一个表更新我的表
我需要根据sim号码从表changeip中的新ip更新表1中的ip(两个表上的whcih相同)
我试着按照这里所说的做:mysql update column with value from another table

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'
谢谢,

az31mfrm

az31mfrm1#

实现所需结果的简单方法如下:
根据您的数据,开始表是



如果您运行查询

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

结果如下:

我相信这是理想的结果。上面的大多数建议都缺少update语句中的where子句,这就是它们失败的原因。

k2fxgqgv

k2fxgqgv2#

你需要 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

brvekthn

brvekthn3#

如果您想更新那些在服务器上有ip的服务器,这应该是可行的 changeip 表并将没有新ip的保留为旧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
);
brccelvz

brccelvz4#

ALTER table1 MODIFY IP varchar(20) null;

如果其他表包含null值,则将列从notnull改为null

相关问题