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('xx',rd.vehicle_number) > 0,1,
                if(LOCATE('yyyy',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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM