欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

用什么步骤可以代替id in

更新时间: 2014-01-05 02:17:03 责任编辑: Author_N1

 

用什么方法可以代替ID IN

--参考方法--
把id放入表中,然后join,表可以是表变量,临时表等
--参考方法--

create table 表1(id int,uid int,idlist varchar(30))

insert into 表1
select 1 ,  10 ,'3,5,7,9,12,30'

create table 表2(id int, title varchar(20))

insert into 表2
select 1,   'a' union all
select 2,   'b' union all
select 3,   'c' union all
select 4,   'd'
go


查询:

if OBJECT_ID('tempdb..#temp') is not null
   drop table #temp
   

select *,
       SUBSTRING(t.idlist, number ,CHARINDEX(',',t.idlist+',',number)-number) as v
       into #temp
from 表1 t,master..spt_values s
where s.number >=1
and s.type = 'P'
and SUBSTRING(','+t.idlist,s.number,1) = ','
and t.uid = 10  


select * from [表2] a
where exists (select idlist from #temp b where a.id = b.v)
/*
id title
3 c
*/

--参考方法--

create table t1(id int,uid int,idlist varchar(100))
insert into t1 
select 1,10,'3,5,7,9,12,30'

create table t2(id int,title varchar(100))
insert into t2
select 1 ,'a'
union all select 2 ,'b'
union all select 3 ,'c'
union all select 4 ,'d'

select t2.*
from t2,t1
where t1.uid=10
and CHARINDEX(','+convert(varchar(100),t2.id)+',',','+t1.idlist+',')>0

try this
--参考方法--
建议:
 1.在[表2].[id]列建索引.
 2.在[表1].[uid]列建索引.
 3.用动态SQL实现.

create table 表1
(id int,uid int,idlist varchar(50))

insert into 表1
 select 1,10,'3,5,7,9,12,30'
 
create table 表2
(id int,title varchar(10))

insert into 表2
 select 1,'a' union all
 select 2,'b' union all
 select 3,'c' union all
 select 4,'d'


-- 在[表2].[id]列建索引.
create index ix_tab2_id on 表2(id)

-- 在[表1].[uid]列建索引.
create index ix_tab1_uid on 表1(uid)

-- 用动态SQL实现.
declare @tsql varchar(6000)

select @tsql=idlist
 from 表1 where uid=10
 
select @tsql='select * from [表2] where id in ('+@tsql+')'

exec(@tsql)

/*
id          title
----------- ----------
3           c

(1 row(s) affected)
*/

--参考方法--
不转换数据时可这样用

select * 
from [表2] as a where  exists(select 1 from [表1] where uid=10 and ','+idlist+',' like '%,'+rtrim(a.id)+',%' )
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:03
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7955/
本文WWW.DOC100.NET DOC100.NET版权所有。