select (select top 1 from list where id in 问题

powbcom 2005-07-08 11:21:32
SELECT Tb.ID,
(select top 1 from list where id in (tb.imglist)) as img,

FROM @indextable t, Tb where Tb.id =t.nid
and t.id between @PageLowerBound and @PageUpperBound order by t.id

问题是
(select top 1 from list where id in (tb.imglist)) as img 取了一个记录

tb.imglist 为varchar 类型,存储数据为:1001,1002

要从list表中取出一条记录,请大家帮帮忙

主要错误是系统会 tb.imglist 转换成int 而数据是1001,1002 不可能转换成功,有人遇到吗?
...全文
237 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pbsql 2005-07-08
  • 打赏
  • 举报
回复
这样:
where ','+tb.imglist+',' like '%,'+id+',%'
powbcom 2005-07-08
  • 打赏
  • 举报
回复
like 不行, like '%,'+id+',%') 只能取中间记录,两头的就取不到,
如果不加两头的,号,像10001 和100011,就变成了等同了
pbsql 2005-07-08
  • 打赏
  • 举报
回复
like是可以的,自己试
powbcom 2005-07-08
  • 打赏
  • 举报
回复
另外,使用like不太好,因为估计到以所肯定有重复的记录,比如:10001 和100011,所以like不行
powbcom 2005-07-08
  • 打赏
  • 举报
回复
谢谢大家的支持,我逐一试过,取出的值都是 null
zlp321002 2005-07-08
  • 打赏
  • 举报
回复
--对啊!风云的也可以啊.
--也可以这样,我习惯这样,效率高


SELECT Tb.ID,
(select top 1 from list where charindex(','+cast(id as varchar)+',',','+tb.imglist+',')>0 ) as img,

FROM @indextable t, Tb where Tb.id =t.nid
and t.id between @PageLowerBound and @PageUpperBound order by t.id
filebat 2005-07-08
  • 打赏
  • 举报
回复
while charindex(convert(varchar(10), id)), tb.imglist)<>0
这样可以吗?
子陌红尘 2005-07-08
  • 打赏
  • 举报
回复
SELECT
Tb.ID,
(select top 1 from list where charindex(','+rtrim(id)+',',','+tb.imglist+',')>0) as img
FROM
@indextable t, Tb
where
Tb.id =t.nid
and
t.id between @PageLowerBound and @PageUpperBound
order
by t.id
pbsql 2005-07-08
  • 打赏
  • 举报
回复
(select top 1 id from list where id in (tb.imglist)) as img
换成
(select top 1 id from list where tb.imglist like '%,'+id+',%') as img
krpol2005 2005-07-08
  • 打赏
  • 举报
回复
exists
(
select * from tb
where imglist=id)
krpol2005 2005-07-08
  • 打赏
  • 举报
回复
把where 换成
exists
(
select * from tb
where id=imglist)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧