mysql联合其他表做更新

Posted 风吹过的绿洲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql联合其他表做更新相关的知识,希望对你有一定的参考价值。

在sql server中,我们可是使用以下update语句对表进行更新:

update a set a.xx= (select yy from b) where a.id = b.id ;

但是在mysql中,不能直接使用set select的结果,必须使用inner join

UPDATE tt_vmap_connect_doc d INNER JOIN (
SELECT 
if(ct.vehicle_site_distance IS not NULL,
            if(ct.vehicle_site_distance > 1000,2,1),
            if(LOCATE(,rd.vehicle_number) > 0,1,
                if(LOCATE(GPS故障,rd.fault_names) > 0,1,2)
            )
) as gps,
ct.id 
FROM tt_vmap_connect_doc ct
INNER JOIN tt_vmap_order_doc od ON ct.order_id = od.id
INNER JOIN tt_vmap_repair_doc rd ON rd.id = od.repair_id
) c ON c.id = d.id SET d.gps_coincide = c.gps,d.reference_value = 1000;

 

另外mysql更新多个字段也不能用括号确定多个字段,而必须一个一个set

 

update a set(a.province,a.city)=(select province,city from b where b.mobile=a.mobile)  --不可用于mysql

update a set a.province=b.province,a.city=b.city from a inner join b on a.mobile=b.mobile.
或者update a set a.province=b.province,a.city=b.city from a,b where a.mobile=b.mobile.

 

以上是关于mysql联合其他表做更新的主要内容,如果未能解决你的问题,请参考以下文章

mysql 多表联合查询语句怎么写

mysql 多表联合更新

mysql联合都不起作用

Mysql多表联合更新删除

MySQL:ALTERing a Huge MySQL Table - 对一个超大表做alter调整

GMSMarker 信息窗口内容(片段)未更新