日期:2014-05-19  浏览次数:20606 次

请教个SQL语句。
这样两张表
T_ADD       (具体地址)
ADDRESS                           ADDRESS_CODE
北京路123号45室                   001        
上海路789弄01号                   002

D_ROAD
    MC                 CODE
北京路             001
上海路             002

现在问题是address_code目前没数据   需要根据   D_ROAD这张代码表   对应T_ADD地址表中的详细地址     更新ADDRESS_CODE的内容     该怎么写呀    

我这样写update   T_ADD   t   set   t.ADDRESS_CODE=(select   CODE   from   D_ROAD   B   where   B.MC   LIKE   t.ADDRESS)
执行了很久都没好     各位帮忙看下该怎么写呢?

------解决方案--------------------
T_ADD (具体地址)
ADDRESS ADDRESS_CODE
北京路123号45室 001
上海路789弄01号 002

D_ROAD
MC CODE
北京路 001
上海路 002

update t_add
set address_code = d_road.code
from t_add,d_road
where charindex(d_road.mc , t_add.address) > 0
------解决方案--------------------
update t
set t.ADDRESS_CODE=(select CODE from D_ROAD B where B.MC LIKE t.ADDRESS)
from T_ADD t
------解决方案--------------------
CREATE TABLE T_ADD
(
[ADDRESS] VARCHAR(50),
ADDRESS_CODE VARCHAR(20)
)
CREATE TABLE D_ROAD
(
MC VARCHAR(50),
CODE VARCHAR(20)
)
INSERT INTO T_ADD([ADDRESS])
SELECT '北京路123号45室 ' UNION
SELECT '上海路789弄01号 '
INSERT INTO D_ROAD
SELECT '北京路 ', '001 ' UNION
SELECT '上海路 ', '002 '

UPDATE A
SET ADDRESS_CODE=B.CODE
FROM T_ADD A INNER JOIN D_ROAD B ON CHARINDEX(B.MC,A.[ADDRESS])> 0


SELECT * FROM T_ADD
--结果
ADDRESS ADDRESS_CODE
-------------------------------------------------- --------------------
北京路123号45室 001
上海路789弄01号 002

(2 行受影响)
------解决方案--------------------
你什么设计哦,难道每次都更新吗?
不建索引,更新要快些