SQL Server最近的行
我相信这很容易,但我已经在谷歌上搜索了很多 好的,我有一个没有日期等的表,有1000000000000000条记录 我想看看最新的条目,即SQL Server最近的行,sql,sql-server,vb.net,Sql,Sql Server,Vb.net,我相信这很容易,但我已经在谷歌上搜索了很多 好的,我有一个没有日期等的表,有1000000000000000条记录 我想看看最新的条目,即 Select top 200 * from table 但我想看看最新的参赛作品。是否有可以在表中使用的行标识符 即 谢谢不,简而言之,如果你没有一个专门的专栏(例如,一个身份,一个序列,或者类似的东西),那么就没有了。如果您这样做了,那么您可以得到一个有序的结果 是否有一个row.identifier可用于表格ie set top 200*from
Select top 200 *
from table
但我想看看最新的参赛作品。是否有可以在表中使用的行标识符
即
谢谢不,简而言之,如果你没有一个专门的专栏(例如,一个身份,一个序列,或者类似的东西),那么就没有了。如果您这样做了,那么您可以得到一个有序的结果 是否有一个row.identifier可用于表格ie set top 200*from table order by row.identifer Desc 如评论中所述,没有。最好的方法是使用标识、时间戳或其他形式的记录标识。这里有一种替代方法,使用
除了
之外,以获得您需要的,但执行计划不是最好的。。。玩转它,并根据需要进行更改
--testing purposes...
DECLARE @tbl TABLE(FirstName VARCHAR(50))
DECLARE @count INT = 0
WHILE (@count <= 12000)
BEGIN
INSERT INTO @tbl(FirstName)
SELECT
'RuPaul ' + CAST(@count AS VARCHAR(5))
SET @count += 1
END
--adjust how many records you would like, example is 200
SELECT *
FROM @tbl
EXCEPT(SELECT TOP (SELECT COUNT(*) - 200 FROM @tbl) * FROM @tbl)
--faster than above
DECLARE @tblCount AS INT = (SELECT COUNT(*) FROM @tbl) - 200
SELECT *
FROM @tbl
EXCEPT(SELECT TOP (@tblCount) * FROM @tbl)
这将向表“ID”中添加另一列,并自动为其指定ID。然后您可以使用标识符…否。表中没有顺序。几乎不可能有一个包含1000000000000000行的表。如果你这样做了,你应该有一个很好的DBA,你可以和他谈谈。是的。完全学士学位。即使每行只有14个字节,表的存储空间也只有1400 PB,SQL Server中的最大数据库大小是524.272 PB。最小行大小为9字节,因此不可能。
--testing purposes...
DECLARE @tbl TABLE(FirstName VARCHAR(50))
DECLARE @count INT = 0
WHILE (@count <= 12000)
BEGIN
INSERT INTO @tbl(FirstName)
SELECT
'RuPaul ' + CAST(@count AS VARCHAR(5))
SET @count += 1
END
--adjust how many records you would like, example is 200
SELECT *
FROM @tbl
EXCEPT(SELECT TOP (SELECT COUNT(*) - 200 FROM @tbl) * FROM @tbl)
--faster than above
DECLARE @tblCount AS INT = (SELECT COUNT(*) FROM @tbl) - 200
SELECT *
FROM @tbl
EXCEPT(SELECT TOP (@tblCount) * FROM @tbl)
ALTER TABLE TABLENAME
ADD ID INT IDENTITY