MySQL中根据CNIC关联更新mobiles_sim_details表id_cnic字段的方法
根据关联表CNIC匹配更新字段的正确写法
直接使用MySQL的多表UPDATE关联语法就能实现你的需求,下面是正确的SQL语句:
UPDATE mobiles_sim_details m INNER JOIN id_details_table i ON m.CNIC = i.CNIC SET m.id_cnic = i.ID WHERE m.id_cnic = 0;
原语句的问题分析
你之前写的语句有两处关键错误:
SET id_cnic='[value-3]'是把字段设成了固定字符串值,而非从id_details_table获取的对应匹配ID- WHERE子句的子查询逻辑错误,既没有限定只更新
id_cnic=0的目标记录,也没有正确利用子查询结果完成赋值
额外提示
- 这里用
INNER JOIN只会处理两张表中CNIC能匹配上的记录;如果你的数据里存在mobiles_sim_details有CNIC但id_details_table无对应记录的情况,想要给这类记录的id_cnic设为NULL,可以把INNER JOIN改成LEFT JOIN,同时保留WHERE m.id_cnic = 0的条件
内容的提问来源于stack exchange,提问作者Sohail Karim
相关产品推荐
相关产品推荐

