+ -
当前位置:首页 → 问答吧 → 求助:对比取值SQL语句

求助:对比取值SQL语句

时间:2011-11-28

来源:互联网

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库的区号全部被替换为空白,请高手帮忙,谢谢。

作者: qswx168   发布时间: 2011-11-28

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的繼續更新,最后再把不能更新的更新為''

作者: roy_88   发布时间: 2011-11-28

SQL code

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

作者: qianjin036a   发布时间: 2011-11-28

引用 1 楼 roy_88 的回复:

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的繼續更新,最后再把不能更新的更新為''


消息 4104,级别 16,状态 1,第 2 行
无法绑定由多个部分组成的标识符 "m.区号"。
消息 4104,级别 16,状态 1,第 2 行
无法绑定由多个部分组成的标识符 "n.区号"。

作者: qswx168   发布时间: 2011-11-28

SQL code
update [a].[dbo].[a] set 区号='' 
from [a].[dbo].[a] m left join [a].[dbo].[区号] n  
       on substring(m.区号,0,3) like substring(n.区号,0,3)
where n.区号 is null


作者: ssp2009   发布时间: 2011-11-28