现有一个表A,有一字段 id,id值唯一且不为空,最大值为20000000,最小值为1,
该表共有1900万行,求一方法得到id间断的那部分值。
该表共有1900万行,求一方法得到id间断的那部分值。
解决方案 »
- 数据库自建查询函数
- 请教个左连接的问题
- SQL Server 2005 无法连接本地的 reporting services
- 达人帮忙写个select,送分
- 求助:sql2000的数据库备份还原到sql2005出错
- sql server 2000增量备份
- MSSQL UPDATE语句的疑问,求解
- select top 2 * from table (这个查询报 incorrect syntax near '2'错)
- 怎么写SQL建立权限管理(针对应用程序)
- 怎么把sqlserver数据库的字符集修改为ISO8859_1?
- 帮忙改下sql语句:mssql收缩用户数据库日志
- ExecuteReader多表查询
建议分批取数据,否则全表扫描会很慢。--SQL2005及以上
with tbl as (
select ROW_NUMBER() over (order by getdate()) ID
from 表A
)
select * from tbl
where not exists (
select * from 表A where tbl.ID=ID)
1900万条,master..spt_values不能满足!
你所你得新建表,里面保存1到200000000000000
create table tb_number(number bigint)declare @i int
set @i=1while @i<20000000
begin
insert into tb_number select @i
set @i=@i+1
end
--建好之后select tb.* from tb left join tb_number on tb.id=tb_number.number where tb_number.number is null
create table # (id int identity,a char(1))
go
insert into #
select NULL
GO 19000000
select id
from # a
where not exists (
select *
from 表A
where a.id=id)
set @i=1while @i<=20000000
begin
insert into tb_number select @i
set @i=@i+1
end
--建好之后select tb.* from tb right join tb_number on tb.id=tb_number.number where tb.number is null