sql语句:数据库记录更新问题,跪求!在线等,奖励100分 ( 积分: 100 )

  • 主题发起人 neal_wang
  • 开始时间
N

neal_wang

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库Microsoft&nbsp;Sql&nbsp;Server&nbsp;2000<br>表名Table<br>栏位<br>Pr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Item&nbsp;&nbsp;&nbsp;desc&nbsp;&nbsp;&nbsp;&nbsp;Name<br>Pr1&nbsp;&nbsp;&nbsp;&nbsp;1000&nbsp;&nbsp;&nbsp;&nbsp;A1<br>Pr1&nbsp;&nbsp;&nbsp;&nbsp;1001&nbsp;&nbsp;&nbsp;&nbsp;D1<br>Pr1&nbsp;&nbsp;&nbsp;&nbsp;1002&nbsp;&nbsp;&nbsp;&nbsp;x1<br>Pr1&nbsp;&nbsp;&nbsp;&nbsp;1049&nbsp;&nbsp;&nbsp;&nbsp;y1<br>Pr1&nbsp;&nbsp;&nbsp;&nbsp;2000&nbsp;&nbsp;&nbsp;&nbsp;A2<br>Pr1&nbsp;&nbsp;&nbsp;&nbsp;2001&nbsp;&nbsp;&nbsp;&nbsp;D1<br>Pr1&nbsp;&nbsp;&nbsp;&nbsp;2002&nbsp;&nbsp;&nbsp;&nbsp;x1<br>Pr1&nbsp;&nbsp;&nbsp;&nbsp;2049&nbsp;&nbsp;&nbsp;&nbsp;y1<br>Pr2&nbsp;&nbsp;&nbsp;&nbsp;1000&nbsp;&nbsp;&nbsp;&nbsp;B1<br>Pr2&nbsp;&nbsp;&nbsp;&nbsp;1001&nbsp;&nbsp;&nbsp;&nbsp;D1<br>Pr2&nbsp;&nbsp;&nbsp;&nbsp;1002&nbsp;&nbsp;&nbsp;&nbsp;x1<br>Pr2&nbsp;&nbsp;&nbsp;&nbsp;1049&nbsp;&nbsp;&nbsp;&nbsp;y1<br>Pr2&nbsp;&nbsp;&nbsp;&nbsp;2000&nbsp;&nbsp;&nbsp;&nbsp;B2<br>Pr2&nbsp;&nbsp;&nbsp;&nbsp;2001&nbsp;&nbsp;&nbsp;&nbsp;D1<br>Pr2&nbsp;&nbsp;&nbsp;&nbsp;2002&nbsp;&nbsp;&nbsp;&nbsp;x1<br>Pr2&nbsp;&nbsp;&nbsp;&nbsp;2049&nbsp;&nbsp;&nbsp;&nbsp;y1<br><br>现在希望的结果是,<br>项目PR1的Item=1000的Desc=A1,则Item=1001-&gt;1049的Desc=A1<br>项目PR1的Item=2000的Desc=A2,则Item=2001-&gt;2049的Desc=A2<br>项目PR2的Item=1000的Desc=B1,则Item=1001-&gt;1049的Desc=B1<br>项目PR2的Item=2000的Desc=B2,则Item=2001-&gt;2049的Desc=B2<br><br>麻烦各位大侠相救!!!<br><br>Update&nbsp;Table<br>Set&nbsp;Name=(Select&nbsp;Desc&nbsp;From&nbsp;Table&nbsp;where&nbsp;Item='%000')<br>Where
 
(select&nbsp;*&nbsp;from&nbsp;Table&nbsp;where&nbsp;item&nbsp;like&nbsp;'%000')&nbsp;A<br>(select&nbsp;*&nbsp;from&nbsp;Table&nbsp;where&nbsp;item&nbsp;not&nbsp;like&nbsp;'%000')&nbsp;B<br>update&nbsp;B&nbsp;set&nbsp;Desc=(select&nbsp;Desc&nbsp;from&nbsp;A)&nbsp;where&nbsp;A.pr=B.pr&nbsp;and&nbsp;left(A.item,1)=left(B.item,1)&nbsp;and&nbsp;A.item+49&nbsp;&lt;&nbsp;B.item<br>意思应该差不多了&nbsp;我没测试&nbsp;:)<br>你可以把A&nbsp;B带进去整理一下
 
update&nbsp;&nbsp;(select&nbsp;*&nbsp;from&nbsp;Table&nbsp;where&nbsp;item&nbsp;not&nbsp;like&nbsp;'%000')&nbsp;B<br>set&nbsp;Desc=(select&nbsp;Desc&nbsp;from&nbsp;(select&nbsp;*&nbsp;from&nbsp;Table&nbsp;where&nbsp;item&nbsp;like&nbsp;'%000')&nbsp;A)&nbsp;<br>where&nbsp;A.pr=B.pr&nbsp;and&nbsp;left(A.item,1)=left(B.item,1)&nbsp;and&nbsp;A.item+49&nbsp;&lt;&nbsp;B.item<br>是这样用吗?<br>我在SQl中编译不过去!麻烦指点一下!
 
你要的是这样的结果吧<br>update&nbsp;&nbsp;table<br>set&nbsp;Desc=a.desc<br>from&nbsp;(select&nbsp;*&nbsp;from&nbsp;table&nbsp;where&nbsp;item&nbsp;like&nbsp;'%000')&nbsp;a<br>where&nbsp;a.pr=table.pr&nbsp;and&nbsp;left(a.item,1)=left(table.item,1)&nbsp;and&nbsp;<br>a.item+49&nbsp;&gt;=&nbsp;table.item&nbsp;and&nbsp;table.item&lt;&gt;a.item
 
多人接受答案了。
 
顶部