sql 中 in( select) 问题

[复制链接]
查看11 | 回复2 | 2011-4-20 21:00:40 | 显示全部楼层 |阅读模式
我用这条语句 不行
select top 1 ID from [Hot] where Show = 'True' and [Hot].UserClass in (select top 1 [User].UserClass from [User] where UserID = 'Temp') order by ID desc
但是这两条分开可以 这是为什么?
select top 1 UserClass from [User] where UserID = 'Temp'
select top 1 ID from [Hot] where Show = 'True' and [Hot].UserClass in (@UserClass) order by ID desc
当前是这样
select top 1 @UserClass = UserClass from [User] where UserID = 'Temp'
Temp 这个用户下面的 UserClas 的值是 'A','B','C'
我取出来到 变量@UserClass里边以后赋值
set @UserClass = ''''''+replace(@UserClass,',',''',''')+''''''
把@UserClass 的值赋成 '''A'',''B'',''C'''
然后用这句
select top 1 ID from [Hot] where Show = 'True' and [Hot].UserClass in ('+@UserClass+') order by ID desc
这样还是不行。。
我如果直接用
select top 1 ID from [Hot] where Show = 'True' and [Hot].UserClass in ('A','B','C') order by ID desc
就可以

回复

使用道具 举报

千问 | 2011-4-20 21:00:40 | 显示全部楼层
没有连接啊 select top 1 ID from [Hot] where Show = 'True' and [Hot].UserClass in (select top 1 [User].UserClass from [User] where UserID = 'Temp' and user.外键=[hot].主键) order by ID desc其中主键和外间看表中怎么定义的
回复

使用道具 举报

千问 | 2011-4-20 21:00:40 | 显示全部楼层
在条件中使用子查询的话需要给子查询一个别名,改成这样试试呢select top 1 ID from [Hot] where Show = 'True' and [Hot].UserClass in (select top 1 [User].UserClass from [User] where UserID = 'Temp') as t order by
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行