DECLARE @student char(8)
SET @student=(SELECT top 1 姓名 FROM XS order by ...)

解决方案 »

  1.   

    恩,能理解(SELECT 姓名 FROM XS)返回的结果不只一个,这是书上一例体,不明白即然多个结果不能赋值给一个变量,那这个例题是经典大学教材,可不是地摊货
      

  2.   

    SET @student=(SELECT 姓名 FROM XS)
    -- (SELECT 姓名 FROM XS)里有个多姓名
      

  3.   

    不能全信书,哈哈,联机帮助中对于"这个符号也不是很统一,不信你可以看看好多print后面跟的字符串是用双引号的,但字符串是用单引号来分隔的。:)
      

  4.   

    ---DECLARE @student char(8)
    ---SET @student=(SELECT 姓名 FROM XS)
    ---GO
    --结果:子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询--用作表达式时,这种情况是不允许的。
    ???DECLARE @student char(8)
    SET @student=(SELECT  top  1 姓名 FROM XS)
    GO你只能选择一条记录值赋给一个变量
      

  5.   

    SQL不支持数组。
    用临时表的方式做。
    CREATE TABLE STUDENT (student char(8))
    Insert STUDENT (student) Select 姓名 FROM XS
      

  6.   

    就是说SELECT后,会出来记录集。而记录集是不能赋值给单个变量的
      

  7.   

    --遍历记录集declare @student varchar(5000)select @student = ''
    select @student = @student + 姓名 + ',' from XSprint left(@student ,len(@student)-1)
      

  8.   

    SET @student=(SELECT top 1 姓名 FROM XS order by ...)
    是不对的,我前几天也遇到了这样的问题,后来,我没办法,就用了sum把所有的值加起来,不过,那样肯定不对,而且,如果不是数值型 的,就更不能那样子了