导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

寻求不用not In 查询语句

lilinxin 2007-12-18 11:11:44
数据库有a表,表中有3个字段 fldid(主建,索引),fldusername,fldUserPwd,fldOnlineflag ,保存有200w数据,
现编写程序生成一个B集合 (1,5,6,99.....)大约几百条数据
目的 :查询表fldid字段符合集合B的数据置fldonlineflag=1
之前sql语句如下
update set fldonlineflag=1 where fldid in (1,5,6,99....)
在查询分析器上不能执行。超级郁闷!
请高手寻求帮助


...全文
37 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fwacky 2007-12-18


drop table lilinxin
create table lilinxin
(id int primary key,
name varchar(10),
fldonlineflag char(1)
)

insert into lilinxin select 1,'AAAA',''
insert into lilinxin select 2,'BBBB',''
insert into lilinxin select 3,'CCCC',''
insert into lilinxin select 4,'DDDD',''

select * from lilinxin

update lilinxin set fldonlineflag = '1' where id in (2,4)

select * from lilinxin
/*
id name fldonlineflag
1 AAAA
2 BBBB 1
3 CCCC
4 DDDD 1


*/
回复
lilinxin 2007-12-18
没有生成B表 ,是用vb编写的生成的集合b --->(1,3,6,8.......)
回复
wzy_love_sly 2007-12-18
declare @tb table (id int)

insert into @tb select 1
insert into @tb select 2
insert into @tb select 3
insert into @tb select 4

declare @id varchar(20)
set @id='2,3'
select * from @tb where charindex(','+cast(id as varchar)+',',','+@id+',')>0
id
2
3
回复
fwacky 2007-12-18

update set fldonlineflag=1 where fldid in (1,5,6,99....) --错误
--------
update a表 set fldonlineflag=1 where fldid in (1,5,6,99....)

回复
liangCK 2007-12-18
update a set fldonlineflag=1
from tb a,(select fldid=1 union all select fldid=5) b
where a.fldid=b.fldid
回复
wzy_love_sly 2007-12-18
如果b是表用inner join
回复
wzy_love_sly 2007-12-18
用charindex()
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告