declare @a int,@b nvarchar(1000)
set @a=4
set @b='select top 1 d.* from(select top '+cast(@a as nvarchar)+' * from mb_usr z,gm_result x where z.user_no=x.user_no order by user_money desc) d order by d.user_money'
exec (@b)
--------------------------------------------------
服务器: 消息 8156,级别 16,状态 1,行 1
多次为 'd' 指定了列 'user_no'。

解决方案 »

  1.   

    declare @a int,@b nvarchar(1000)
    set @a=4
    set @b='select top 1 d.* from (select top '+cast(@a as nvarchar)+' * from mb_usr z,gm_result x where z.user_no=x.user_no order by user_money desc) d order by d.user_money'
    exec (@b)
    -----------------------------------------------
    from 那里空一格
      

  2.   

    declare @a int,@b nvarchar(1000)
    set @a=4
    set @b='select top 1 d.* from(select top '+cast(@a as nvarchar)+' z.*,x.col1,... from mb_usr z,gm_result x where z.user_no=x.user_no order by user_money desc) d order by d.user_money'
    exec (@b)
    两个表都有user_no字段,不要写*
      

  3.   

    * from mb_usr z,gm_result x这个*号有问题,z和x中都有user_no字段
      

  4.   

    肯定错了  select top 1 * 
         from mb_usr z,gm_result x 
         where z.user_no=x.user_no order by user_money desc
    这句会出现两个 user_no
    你需要指定一下 把 top 1 * 换掉
      

  5.   

    问题:select top '+cast(@a as nvarchar)+' * from mb_usr z,gm_result x where z.user_no=x.user_no order by user_money desc 这里的 mb_usr  和 gm_result 里面都有user 
    生成的表里面虽然没有关系但是你在从外面选择的时候 就会出现你上面的提示 
    有相同的列名 所以是不可以的
      

  6.   

    你mb_usr,gm_result 这两个表中都有user_no这个字段。