获取不在表中的数据

bombw 2011-03-18 10:02:10
表a

id 其他...
1 ...
2 ...
3 ...
4 ...

select * from 表a where id in (1,3,6,7)

可以获取到1,3的信息,但如何返回6,7不在行中的信息?

...全文
122 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluesmiler 2011-03-18
  • 打赏
  • 举报
回复
select distinct replace('1,3,16,17',stuff((select ','+cast (id as varchar) from tb t where id in (1,3,16,17)
for xml path('')), 1, 1, '')+',','') from tb
bluesmiler 2011-03-18
  • 打赏
  • 举报
回复
create table tb (id int identity(1,1),value varchar(10))
insert into tb values ('a')
insert into tb values ('b')
insert into tb values ('c')
insert into tb values ('d')
insert into tb values ('e')
insert into tb values ('f')
insert into tb values ('g')

declare @sql nvarchar(4000)
declare @input nvarchar(4000)
set @input='1,3,5,15,16'
set @sql='select replace('''+@input+''',a.id+'','','''') from
(select distinct [id]=stuff((select '',''+cast (id as varchar) from tb t where id in ('+@input+')
for xml path('''')), 1, 1, '''') from tb) a'

EXEC sp_executesql @SQL

bombw 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ssp2009 的回复:]

引用 3 楼 bombw 的回复:
查询条件上百个的话只有拼sql语句了?
条件 (1,12,412,53,2,5,9,......)

你既然能在in里写上百条,我相信你能做到。。。。。。
[/Quote]

在in里写条件很多不好? 查询条件很多的情况下有其他的什么方法么?
xiaoguanzhao 2011-03-18
  • 打赏
  • 举报
回复
select * from 表a where id not in(6,7)
快溜 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bombw 的回复:]
查询条件上百个的话只有拼sql语句了?
条件 (1,12,412,53,2,5,9,......)
[/Quote]
你既然能在in里写上百条,我相信你能做到。。。。。。
Mr_Nice 2011-03-18
  • 打赏
  • 举报
回复
DECLARE @i TABLE(id INT)

INSERT INTO @i
select 1
union
select 3


select * from (
select 1 AS id
union
select 3 AS id
union
select 6 AS id
union
select 7 AS id)A
except
select id from @i where id in (1,3,6,7)


/*
6
7*/
Shawn 2011-03-18
  • 打赏
  • 举报
回复
;WITH cte AS
(SELECT id = ROW_NUMBER() OVER(ORDER BY GETDATE()) FROM sys.columns a, sys.columns b)
SELECT *
FROM cte a
LEFT JOIN tb b
ON a.id = b.id
WHERE rowno IN(1,3,6,7)
cutebear2008 2011-03-18
  • 打赏
  • 举报
回复
不在数据行中就选不出来了,这不就表明它不在表中吗!
你想咋样啊?
bombw 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fredrickhu 的回复:]

需要得到的结果是什么??什么叫做6,7不在行中的数据??
[/Quote]

返回 6 7 不再表中就可以了
--小F-- 2011-03-18
  • 打赏
  • 举报
回复
需要得到的结果是什么??什么叫做6,7不在行中的数据??
bombw 2011-03-18
  • 打赏
  • 举报
回复
查询条件上百个的话只有拼sql语句了?
条件 (1,12,412,53,2,5,9,......)
Mr_Nice 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 bombw 的回复:]
表a

id 其他...
1 ...
2 ...
3 ...
4 ...

select * from 表a where id in (1,3,6,7)

可以获取到1,3的信息,但如何返回6,7不在行中的信息?
[/Quote]

LZ意思是行里面都没有,也要获取?

若数据上没有的话,估计LZ得需要自己添加上去了

select id from TBA where id in (1,3,6,7)
union
select 6
union
select 7
快溜 2011-03-18
  • 打赏
  • 举报
回复
select * from (select 1 as id union select 3 union select 6 union select 7) a
left join 表a b on a.id=b.id

34,594

社区成员

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

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