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'。
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'。
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 那里空一格
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字段,不要写*
from mb_usr z,gm_result x
where z.user_no=x.user_no order by user_money desc
这句会出现两个 user_no
你需要指定一下 把 top 1 * 换掉
生成的表里面虽然没有关系但是你在从外面选择的时候 就会出现你上面的提示
有相同的列名 所以是不可以的