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

sqlserver update inner join 有关问题 ! 解决马上给分

2012-04-19 
sqlserverupdate inner join 问题 ! 解决马上给分sql:代码UPDATE RollingStock set quantity a.quantityf

sqlserver update inner join 问题 ! 解决马上给分
sql:代码

UPDATE RollingStock set quantity =a.quantity

from (select quantity,contractuntil,lastchange,addressno,partnumber from RollingStock where rollingstock_id>894) as a 

inner join (select quantity,contractuntil,lastchange,addressno,partnumber from RollingStock where rollingstock_id<=894) as c  

on a.addressno+a.partnumber=c.addressno+c.partnumber 

where RollingStock.rollingstock_id<=894 

and RollingStock.addressno+RollingStock.partnumber in (select d.addressno+d.partnumber 

from (select quantity,contractuntil,lastchange,addressno,partnumber from RollingStock where rollingstock_id>894) as d 

inner join (select quantity,contractuntil,lastchange,addressno,partnumber from RollingStock where rollingstock_id<=894) as e 

on d.addressno+d.partnumber=e.addressno+e.partnumber )


update级联更新

sql的意思 更新RollingStock表的quantity 字段 

将RollingStock表rollingstock_id>894 作为一个表 和 RollingStock表rollingstock_id<=894 作为一个表

做内联 如果有重复的数据 用RollingStock表rollingstock_id>894 的quantity 字段更新 

RollingStock表rollingstock_id<=894 的quantity 字段  

现在的SQL没有语法错误 也能更新 但更新的数据都是同样的结果 也就是说都是更新的一条死的数据 没有实现级联的更新

我在网上查过该语法 也没发现有什么不对的 请教高手了 给指点下吧

[解决办法]
跨表更新,我给楼主举个例子:

SQL code
create table m_name  (id int,name varchar(4))insert into m_nameselect 1,'张三' union allselect 2,'李四' union allselect 3,'王五'select * from m_name/*id          name----------- ----1           张三2           李四3           王五*/create table m_chengji  (name varchar(4),kemu int,chengji int,id sql_variant)insert into m_chengjiselect '张三',1,95,null union allselect '张三',2,92,null union allselect '张三',3,91,null union allselect '李四',1,56,null union allselect '李四',2,76,null union allselect '李四',3,99,null union allselect '王五',1,57,null union allselect '王五',2,100,null union allselect '王五',3,67,nullselect * from m_chengji/*name kemu        chengji     id---- ----------- ----------- -----------张三   1           95          NULL张三   2           92          NULL张三   3           91          NULL李四   1           56          NULL李四   2           76          NULL李四   3           99          NULL王五   1           57          NULL王五   2           100         NULL王五   3           67          NULL*/-- 更新m_chengji表的id为m_name中的idupdate m_chengji set id = a.id from m_chengji b left join m_name a on a.[name]=b.[name]
[解决办法]
楼主先使用select看下是否能查询出你需要的数据。
[解决办法]
SQL code
建议你提供详细的资料:例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。 

热点排行