单从sql语句角度,你那个已经没有得进一步优化了。加多一个checking缩小范围看看?不过exists得付出也不小。。update a set Dep=(select bDep from b where a.infoid=b.infoid)WHERE EXISTS (SELECT 1 FROM bDep c WHERE a.infoid = c.infoid AND a.Depc.bDp) 循环你就别考虑。。。那个效果肯定很低下。。而且如果是通过循环作30多万条的内容,就失去数据库的意义了。不过你提到循环,我倒有个思路。1)筛选出要update 得纪录,SELECT 1 FROM bDep c WHERE ...