11 个解决方案
#1
如果有自增列,可以用
select top 100 * from [表名] order by [自增列] desc
如果没有自增列,可用触发器,将插入的记录存到自定义表里,自定义表只存最后插入的100条记录.
select top 100 * from [表名] order by [自增列] desc
如果没有自增列,可用触发器,将插入的记录存到自定义表里,自定义表只存最后插入的100条记录.
#2
补充,LZ的需求应可用change tracking实现,推荐一下.
参考 http://msdn.microsoft.com/en-us/library/bb933875(v=sql.105).aspx
参考 http://msdn.microsoft.com/en-us/library/bb933875(v=sql.105).aspx
#3
自己加一个自增列排序 然后再查询。
#4
oracle 中rowid跟插入时间的顺序没有任何关系
sqlserver中可以中自增列,序列等实现
sqlserver中可以中自增列,序列等实现
#5
每个表建一个自增列,或者每个表建一个触发器
#6
要有自增列就比较简单
#7
感谢楼上的各位大牛,数据库表的结构是不能改变的!所以添加自增列这个可以排除了。请问有没有其它方法,我的目的是想把服务器上的大数据库,拷贝最新的数据到本地作为测试库。
#8
找唯一标识吧,比如说日期,数字之类的
#9
自增列不行的话,要么就用时间列了 。没有时间列的话么……还是等大神解答吧~
#10
等待大神的回答!
#11
CREATE TABLE [dbo].[inserttest](
[id] [int] NULL,
[name] [nvarchar](100) NULL,
[male] [nvarchar](10) NULL,
[age] [int] NULL
) ON [PRIMARY]
GO
ALTER proc [dbo].[insert_test](@count1 int,@count2 int)--@count1=1,@count2=10000000
as
while(@count1<@count2)
begin
if @count1%2=0
insert into testinsert.dbo.inserttest values(@count1,'a'+CONVERT(nvarchar,@count1 ),'f',@count1)
else
insert into testinsert.dbo.inserttest values(@count1,'a'+CONVERT(nvarchar,@count1 ),'m',@count1)
set @count1=@count1+1
end
exec insert_test 1,101
go
exec insert_test 101,201
go
select a.*
from inserttest a
where a.id not in(select top 100 id from inserttest )
(100 row(s) affected)
#1
如果有自增列,可以用
select top 100 * from [表名] order by [自增列] desc
如果没有自增列,可用触发器,将插入的记录存到自定义表里,自定义表只存最后插入的100条记录.
select top 100 * from [表名] order by [自增列] desc
如果没有自增列,可用触发器,将插入的记录存到自定义表里,自定义表只存最后插入的100条记录.
#2
补充,LZ的需求应可用change tracking实现,推荐一下.
参考 http://msdn.microsoft.com/en-us/library/bb933875(v=sql.105).aspx
参考 http://msdn.microsoft.com/en-us/library/bb933875(v=sql.105).aspx
#3
自己加一个自增列排序 然后再查询。
#4
oracle 中rowid跟插入时间的顺序没有任何关系
sqlserver中可以中自增列,序列等实现
sqlserver中可以中自增列,序列等实现
#5
每个表建一个自增列,或者每个表建一个触发器
#6
要有自增列就比较简单
#7
感谢楼上的各位大牛,数据库表的结构是不能改变的!所以添加自增列这个可以排除了。请问有没有其它方法,我的目的是想把服务器上的大数据库,拷贝最新的数据到本地作为测试库。
#8
找唯一标识吧,比如说日期,数字之类的
#9
自增列不行的话,要么就用时间列了 。没有时间列的话么……还是等大神解答吧~
#10
等待大神的回答!
#11
CREATE TABLE [dbo].[inserttest](
[id] [int] NULL,
[name] [nvarchar](100) NULL,
[male] [nvarchar](10) NULL,
[age] [int] NULL
) ON [PRIMARY]
GO
ALTER proc [dbo].[insert_test](@count1 int,@count2 int)--@count1=1,@count2=10000000
as
while(@count1<@count2)
begin
if @count1%2=0
insert into testinsert.dbo.inserttest values(@count1,'a'+CONVERT(nvarchar,@count1 ),'f',@count1)
else
insert into testinsert.dbo.inserttest values(@count1,'a'+CONVERT(nvarchar,@count1 ),'m',@count1)
set @count1=@count1+1
end
exec insert_test 1,101
go
exec insert_test 101,201
go
select a.*
from inserttest a
where a.id not in(select top 100 id from inserttest )
(100 row(s) affected)