select top 5 name='cursor_sna' from sysobjects
select * from sysobjects where name='cursor_sna'查询结果是
name
----------
cursor_sna
cursor_sna
cursor_sna
cursor_sna
cursor_sna(5 行受影响)name                                                                                                                             id          xtype uid    info   status      base_schema_ver replinfo    parent_obj  crdate                  ftcatid schema_ver  stats_schema_ver type userstat sysstat indexdel refdate                 version     deltrig     instrig     updtrig     seltrig     category    cache
-------------------------------------------------------------------------------------------------------------------------------- ----------- ----- ------ ------ ----------- --------------- ----------- ----------- ----------------------- ------- ----------- ---------------- ---- -------- ------- -------- ----------------------- ----------- ----------- ----------- ----------- ----------- ----------- ------(0 行受影响)结果这样不同,他们有什么区别?

解决方案 »

  1.   


    select top 5 name='cursor_sna' from sysobjects
    --这是从 sysobjects 表里查出前5行数据 ,并且列值为'cursor_sna'  列名为 nameselect * from sysobjects where name='cursor_sna'
    --这是从sysobjects 表里查找 对象名为 'cursor_sna' 的结果集--当然不一样啦!
      

  2.   

    select top 5 name='cursor_sna' from sysobjects 
    --查询sysobjects的前五条记录,每条记录只显示'cursor_sna'这个自定义的字符,列名为name.
    select * from sysobjects where name='cursor_sna'
    --查询列名为'cursor_sna'的记录
      

  3.   

    有些明白了
    那我每次创建触发器的时候都这样判断:
    if(exists (select name='EC_insert_User' from sysobjects))
    drop Trigger EC_insert_User
    GO这样岂不是很没用呢?
      

  4.   

    但是,如果触发器真的存在就真的drop掉了呀
    为什么呢?
      

  5.   

    那个语句就是这个意思,没有为什么。要让SQL做什么决定于你的给它的指定。
      

  6.   

    要让SQL做什么取决于你的给它的指令。
      

  7.   

    DECLARE @TA TABLE(ID INT)
    INSERT @TA SELECT 1 SELECT TOP 5 ID=4,ID FROM @TADECLARE @TB TABLE(ID INT)
    --INSERT @TA SELECT 1 SELECT TOP 5 ID=4,ID FROM @TB/*
    (所影响的行数为 1 行)ID          ID          
    ----------- ----------- 
    4           1(所影响的行数为 1 行)ID          ID          
    ----------- ----------- (所影响的行数为 0 行)看个例子很简单了,
    赋值问题
      

  8.   

    这句的意思是如果sysobjects表中有记录存在就删除触发器EC_insert_User,不论里面的记录是什么。
    相当于:
    if(exists (select * from sysobjects))
    drop Trigger EC_insert_User
    GO