这样的UPDATE...SELECT语句怎么写?

来源:百度知道 编辑:UC知道 时间:2024/09/23 14:38:30
TABLE1
DW---------------CS
111010101
111020201
111010202
111010105

TABLE2
DW--------------CS
111000000 1.00
111020000 0.80
请教,如何用UPDATE TABLE1 SET CS = (SELECT CS FROM TABLE2)...
的SQL语句将TABLE2中的CS值更新到TABLE1中,查询条件为:在TABLE2中查找TABLE1表中的值,如果没有完全相街的,则前7位相等即可视为相等,如没有则将前5位相同视为相等,如没有则将前3位相同视为相等。这个条件不知该怎样写到这一条语句中,请大家帮助。不知是否说清楚了。
感谢参与,可能还是我没有说明白。
这两个表中TABLE2是参数表,TABLE1是主表,TABLE1中的DW对应的CS值来源于TABLE2表,如:111010101是第三级单位的代码,它的的CS从TABLE2中取DW值它完全相同的值的记录的CS值,如果找不到,则找111010100(三级单位的上级二级单位)的记录将其CS值作为第三级单位的CS值,如果还找不到,则找三级单位的上级单位的上级单位(即111010000)的值作为三级单位的CS值。
呵呵,在TABLE2表中的记录是唯一的,不可能存在多条记录的问题,也就是说从全部相等开始匹配,TABLE2中只有一个最佳的记录可以匹配给TABLE1中相应的众多记录。

楼上的站着说话不腰痛..

楼主要的是最佳选择....

那么简单你全部写出来撒..

楼主..假如最后只有前三位相同..但是存在几条记录.是不是取第一条记录插入数据库??

你说的很清楚,但你有没有考虑过越到后面,table1 可能出现一个记录对table2的 多条记录 也就是一对多,例如,前3位相同视为相等,table2出现了2个值,你让table1 里的111010101取哪一个?

update table1 set table1.CS=table2.cs from table1 ,table2 where table1.DW=table2.DW
这个是DW完全相等的情况!
取前7位也没什么难的 left(table1.DW ,7)=left(table2.DW,7)