我有4张桌子

第一表:客户(其记录约2000的)

ID      province      regency     district
1       CJ            SE          T district
2       CJ            SE          G district
3       CJ            SE          B district
.....


第二表:省

ID      province      province_id
1       CJ            33
2       WJ            32
3       EJ            31
.....


第三表:摄政

ID      regency        province_id
3301    SE city        33
3302    SE regency     33
3303    SK city        33
3304    SK regency     33
.....


第四表:区

ID      district       regency_id
3301    T district     3301
3302    G district     3301
3303    A district     3302
3304    B district     3302
.....


我想根据需要更新客户信息,因此结果如下。我已经将updateinner join一起使用,依此类推,但没有得到所需的结果。

ID      province      regency      district
1       CJ            SE city      T district
2       CJ            SE city      G district
3       CJ            SE regency   B district
.....


我已经使用了此查询,但它根本不起作用。结果什么都没有

UPDATE customer
inner JOIN province ON customer.province = province.`name`
inner join district on customer.district = district.`name`
SET customer.regency = regencie.`name`
WHERE
    customer.regency = province.`name`
    AND customer.district = district.`name`


非常感谢你。如果有类似问题的帖子已经解决,请纠正我。

最佳答案

如果要使用JOIN更新,可以尝试此操作。


  更新[表]
  
  JOIN [表格] ...
  
  SET [col] = [col1]
  
  哪里...


UPDATE customer c
inner join province p on p.province = c.province
inner join regency r on r.province_id = p.province_id
SET c.regency = r.regency


SQLFIDDLE:http://sqlfiddle.com/#!9/3b0cb6/1

编辑

根据您的评论,您需要在join表上的district链接为

像这样。

UPDATE customer c
inner join province p on p.province = c.province
inner join regency r on r.province_id = p.province_id
inner join district d on d.regency_id = r.ID
SET c.regency = r.regency
where c.district = d.district


sqlfiddle:http://sqlfiddle.com/#!9/5dc7b2/1

09-30 15:04
查看更多