请教个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 行受影响)
------解决方案--------------------你什么设计哦,难道每次都更新吗?
不建索引,更新要快些