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没有语法错误 也能更新 但更新的数据都是同样的结果 也就是说都是更新的一条死的数据 没有实现级联的更新
我在网上查过该语法 也没发现有什么不对的 请教高手了 给指点下吧
[解决办法]
跨表更新,我给楼主举个例子:
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看下是否能查询出你需要的数据。
[解决办法]
建议你提供详细的资料:例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。