真罕见。。。还能这样????【playwarcraft(时间就像乳沟,挤挤还是有的) 快来抢分】

Debug_mq 2006-10-27 11:47:01
临时表
Item Color id
---------- ---------- -----------
Chair Red 0
Chair White 0
Chair Yellow 0
Table Blue 0
Table Green 0
Table Red 0
执行
DECLARE @Item varchar(10),@i varchar(10)
UPDATE # SET @i=CASE WHEN @Item=Item THEN @i+1 ELSE 1 END,id=@i,@Item=Item

变成

Item Color id
---------- ---------- -----------
Chair Red 1
Chair White 2
Chair Yellow 3
Table Blue 1
Table Green 2
Table Red 3


----------------请问这个Update怎么个执行方式啊?变量是怎么赋值的?
WHEN 这里怎么比较的?
...全文
314 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
stou 2006-10-28
  • 打赏
  • 举报
回复
撿分.
lizhizhe2000 2006-10-28
  • 打赏
  • 举报
回复
可以看下SQL的联机丛书呀/WHEN的语法
blackant2 2006-10-28
  • 打赏
  • 举报
回复
MARK
i9988 2006-10-28
  • 打赏
  • 举报
回复
初始状态:@item = null,@i = null
取表中的第一条记录,根据条件得到@i = 1,所以 id =1,此时@item = Chair
--这里所谓“根据条件”,就是根据@Item=null Item=Chair ,@Item=Item不成立,所以@i=1
取表中的第二条记录,根据条件得到@i = 2,所以 id = 2,此时@item = Chair
--这里所谓“根据条件”,就是根据@Item=Item=Chair ,@Item=Item成立,所以@i=@i+1=2
取第三条时,@i = 3,id = 3,@item = Chair
--与第二条同
取第四条时,由于item <> @item,所以 @i = 1,id = 1,此时@item = Table了
--这里是根据@Item=Chair Item=Table ,@Item=Item不成立,所以@i=1
。。。。
i9988 2006-10-28
  • 打赏
  • 举报
回复
hhhdyj() ( ) 信誉:100 Blog 2006-10-28 14:05:00 得分: 0


初始状态:@item = null,@i = null
取表中的第一条记录,根据条件得到@i = 1,所以 id =1,此时@item = Chair
取表中的第二条记录,根据条件得到@i = 2,所以 id = 2,此时@item = Chair
取第三条时,@i = 3,id = 3,@item = Chair
取第四条时,由于item <> @item,所以 @i = 1,id = 1,此时@item = Table了
。。。。



i9988 2006-10-28
  • 打赏
  • 举报
回复
抢分我也来
playwarcraft 2006-10-28
  • 打赏
  • 举报
回复
樓主叫我來搶分!!!!!!!!!!!!!!!!!
xyxfly 2006-10-28
  • 打赏
  • 举报
回复
:)
hhhdyj 2006-10-28
  • 打赏
  • 举报
回复
初始状态:@item = null,@i = null
取表中的第一条记录,根据条件得到@i = 1,所以 id =1,此时@item = Chair
取表中的第二条记录,根据条件得到@i = 2,所以 id = 2,此时@item = Chair
取第三条时,@i = 3,id = 3,@item = Chair
取第四条时,由于item <> @item,所以 @i = 1,id = 1,此时@item = Table了
。。。。
Debug_mq 2006-10-27
  • 打赏
  • 举报
回复
TO:xiaoku(野蛮人(^v^))
哪里有Select

to: YiZhiNet(九斤半)
我想知道怎么处理的,我知道是累加,他怎么取得到变量的值啊???
xiaoku 2006-10-27
  • 打赏
  • 举报
回复
select 每个查询都做一次
@i+1
九斤半 2006-10-27
  • 打赏
  • 举报
回复
累加的,判定是否连继的记录,如果连续则ID=ID+1,否则ID=1

如果是下列数据,结果就不一样了~~~
Chair Red 0
Chair White 0
Table Green 0
Chair Yellow 0
Table Blue 0
Table Red 0
hhhdyj 2006-10-27
  • 打赏
  • 举报
回复
把这个处理过程理解为游标,一条一条的处理就明白了。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧