SQLServer 怎样查询出一个表的最新插入的100条记录

Faycon 2014-09-08 09:58:03
SQLServer 怎样查询出一个表的最新插入的100条记录,比如我有一个数据库,数据库中有N张表,我想查询出每个表的最新插入的100条记录,表结构都不一样,字段也不一样。有的有主键,有的没有主键。如果有Oracle中的RowID函数就可以解决问题了。在此向大牛,大神们请教。
...全文
4267 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
walkeeper 2014-09-09
  • 打赏
  • 举报
回复
自增列不行的话,要么就用时间列了 。没有时间列的话么……还是等大神解答吧~
snn318 2014-09-09
  • 打赏
  • 举报
回复
找唯一标识吧,比如说日期,数字之类的
Faycon 2014-09-09
  • 打赏
  • 举报
回复
感谢楼上的各位大牛,数据库表的结构是不能改变的!所以添加自增列这个可以排除了。请问有没有其它方法,我的目的是想把服务器上的大数据库,拷贝最新的数据到本地作为测试库。
xiaoxiangqing 2014-09-09
  • 打赏
  • 举报
回复
要有自增列就比较简单
以学习为目的 2014-09-09
  • 打赏
  • 举报
回复
每个表建一个自增列,或者每个表建一个触发器
专注or全面 2014-09-09
  • 打赏
  • 举报
回复
oracle 中rowid跟插入时间的顺序没有任何关系 sqlserver中可以中自增列,序列等实现
--小F-- 2014-09-09
  • 打赏
  • 举报
回复
自己加一个自增列排序 然后再查询。
木鸟飞木鸟飞 2014-09-09
  • 打赏
  • 举报
回复

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)
Faycon 2014-09-09
  • 打赏
  • 举报
回复
等待大神的回答!
唐诗三百首 2014-09-08
  • 打赏
  • 举报
回复
补充,LZ的需求应可用change tracking实现,推荐一下. 参考 http://msdn.microsoft.com/en-us/library/bb933875(v=sql.105).aspx
唐诗三百首 2014-09-08
  • 打赏
  • 举报
回复
如果有自增列,可以用 select top 100 * from [表名] order by [自增列] desc 如果没有自增列,可用触发器,将插入的记录存到自定义表里,自定义表只存最后插入的100条记录.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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