首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一条更新话语

2013-09-17 
求一条更新语句.A表线别|代码|名称----------------------01|207| 北京01|208| 郑州01|209| 南京30|101|

求一条更新语句.

A表
线别  |  代码  |  名称
----------------------
01    |  207   | 北京
01    |  208   | 郑州
01    |  209   | 南京
30    |  101   | 北京
30    |  103   | 石家庄
30    |  104   | 邯郸
30    |  108   | 郑州


B表
标志符 | 线别  |  代码  |  名称
----------------------
A07    | 01    |  207   | 北京
A07    | 01    |  208   | 郑州
A07    | 01    |  209   | 南京
AS2    | 30    |  101   | 北京
AS2    | 30    |  103   | 天津
AS2    | 30    |  104   | NULL
AS2    | 30    |  108   | 郑州


A表是标准字典表..里面含有统一的线路,代码.名称.线路和代码能确定一个站名.

B表的线别和代码是正确的..但是名称不一定正确...且同一组数据的标识符是一样的..

现在要根据A表把B表中数据按标识符把站名同步过来...

如何写update语句..
[解决办法]
update a set 名称=b.名称 from b where a.代码=b.代码
[解决办法]
update b
set b.名称=a.名称
from a inner join b on a.线别=b.线别 and a.代码=b.代码
where b.名称<>a.名称
[解决办法]
引用:
Quote: 引用:

update b
set b.名称=a.名称
from a inner join b on a.线别=b.线别 and a.代码=b.代码
where b.名称<>a.名称

追问下..
如果A表里存在重复记录.这条语句该如何改动?



A表是基础表,应该做联合主键约束,即(线别、代码)两个字段做联合主键,不做主键会带来很多麻烦,统计结果导致不正确
如果已经存在,应该先删除重复记录,然后立即加约束

热点排行