日期:2014-05-18  浏览次数:20542 次

求助:对比取值SQL语句
update [a].[dbo].[a] set 区号='' from [a].[dbo].[a] m, [a].[dbo].[区号] n 
where substring(m.区号,0,3) not like substring(n.区号,0,3)

update [a].[dbo].[a] set 区号='' from [a].[dbo].[a] m, [B].[dbo].[区号] n 
where m.区号 not like n.区号

目的:因为A数据库中的区号字段有一些区号不规范,有些甚至不是区号,但是数字,如026,我将B库创建一个表,表里的区号字段是全国的区号,我想通过二个数据库的对比,将不是区号的替换为空白,但以上二句都不行,执行后A库的区号全部被替换为空白,请高手帮忙,谢谢。

------解决方案--------------------
探讨

引用:

SQL code
UPDATE a
SET 区号=b.ID
from [a].[dbo].[a] AS a
INNER JOIN [a].[dbo].[区号] AS b ON substring(m.区号,0,3)=substring(n.区号,0,3)

應該是這樣先把存在的替換為區號的ID,一段段更更 加上條件a表的區號不是區號ID的繼……

------解决方案--------------------
SQL code
update a set 区号='' from a  where not exists(select 1 from B.dbo.a where 区号=t1.区号)

------解决方案--------------------
探讨

SQL code

use A
update t1 set 区号='' from a t1 where not exists(select 1 from B.dbo.a where 区号=t1.区号)