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

一条SQL语句,该如何解决

2012-03-25 
一条SQL语句CREATE PROCEDURE [dbo].[MoveNodeUp]@type_id intASdeclare @lft intdeclare @rgt intdeclare

一条SQL语句
CREATE PROCEDURE [dbo].[MoveNodeUp] 
  @type_id int
AS
declare @lft int
declare @rgt int
declare @layer int
if exists (select 1 from tree where type_id=@type_id)
  begin
  SET XACT_ABORT ON
  BEGIN TRANSACTION
  select @lft=lft,@rgt=rgt,@layer=layer from TreeView where type_id=@type_id
  if exists (select * from TreeView where rgt=@lft-1 and layer=@layer)
  begin
  declare @brother_lft int
  declare @brother_rgt int
  select @brother_lft=lft,@brother_rgt=rgt from TreeView where rgt=@lft-1 and layer=@layer
  update tree set lft=lft-(@brother_rgt-@brother_lft+1) where lft>=@lft and rgt<=@rgt
  update tree set lft=lft+(@rgt-@lft+1) where lft>=@brother_lft and rgt<=@brother_rgt
  update tree set rgt=rgt-(@brother_rgt-@brother_lft+1) where rgt>@brother_rgt and rgt<=@rgt
  update tree set rgt=rgt+(@rgt-@lft+1) where lft>=@brother_lft+(@rgt-@lft+1) and rgt<=@brother_rgt
  end
  COMMIT TRANSACTION
  SET XACT_ABORT OFF  
  end
中的select 1 from tree where type_id=@type_id这里的 1 是什么意思呢?谢谢大家

[解决办法]
1 跟 * 一样,代表计数.
[解决办法]
exists not exists 实际不返回列表,所以列表部分些什么都可以,写1只是一种习惯

[解决办法]

SQL code
exists (select 1 from tree where type_id=@type_id)---这里exists表示存在 所以在后面子查询中只要存在就可以了 所以没必要查询所有字段 只要是常量就可以了
[解决办法]
就你这个具体问题来讲,是说明按照这个条件存在记录。也就是存在给定条件的信息。如果放在整个算法中来讲,则是另外一个层面了。另外一个天地。
[解决办法]
SQL code
--这个你懂不?if exists (select * from tree where type_id=@type_id)--用1只是为了减少返回的字段,因为只是判断条件是否成立,所以没必要查具体字段
[解决办法]
HTML code
中的select 1 from tree where type_id=@type_id这里的 1 是什么意思呢?谢谢大家
[解决办法]
这是个人习惯..你不喜欢可以用其他的带他...exists 他不考虑字段的属性..你看一不爽你可以查以个 字段...比如表中有id,你就 if not exists(select id from tree where type_id=@type_id) 也行
[解决办法]
探讨
SQL code
exists (select 1 from tree where type_id=@type_id)


---这里exists表示存在 所以在后面子查询中只要存在就可以了 所以没必要查询所有字段 只要是常量就可以了

热点排行