获取表中的最后一行,没有唯一标识符,也没有使用ORDER BY

时间:2015-07-07 10:32:47

标签: sql sql-server sorting tsql sql-server-2012

我有数据

column1   column2  column3 
Data101    Data2   Data3
Data100    Data20  Data355
Data10     Data2   Data3lh

表中的非结构化数据,没有唯一列且没有索引

我想要最后一行

输出:

Data10     Data2   Data3lh

4 个答案:

答案 0 :(得分:5)

没有任何排序标准,没有办法实现这一目标。如果您做一个简单的

,则无法保证任何订单

SELECT * FROM xy

你可以获得任何回报。

如果您想按插入顺序获取行,则应添加IDENTITY列。

如果您想强制执行伪订单,可以尝试使用ROW_NUMBER OVER(ORDER BY somecolumn) AS PseudoInx

答案 1 :(得分:0)

试试这个......!

如果您的表格有IDENTITY列,那么您可以使用以下查询。

SELECT *
FROM    Tablename
WHERE   UNIQID= IDENT_CURRENT('Tablename')

答案 2 :(得分:-1)

您必须使用dynamic cursor

DECLARE ID CURSOR
DYNAMIC 
FOR
SELECT * FROM TableName
OPEN ID
FETCH LAST FROM ID 
CLOSE ID
DEALLOCATE ID

此外,它已经过测试

http://sqlfiddle.com/#!3/b82295/2

答案 3 :(得分:-2)

你不能使用另一个表来检索结果,如下所示: -

Declare @test Table
(
     column1  Varchar(500) 
    ,column2  Varchar(500)
    ,column3  Varchar(500)
)

Declare @result Table
(
     Id       Int Identity(1,1) Primary Key
    ,column1  Varchar(500) 
    ,column2  Varchar(500)
    ,column3  Varchar(500)
)

Insert Into @test(column1,column2,column3) Values
 ('Data101','Data2','Data3')
,('Data100','Data20','Data355')
,('Data10','Data2','Data3lh')

Insert Into @result(column1,column2,column3)
Select   t.column1
        ,t.column2
        ,t.column3
From    @test As t


Select   t.column1
        ,t.column2
        ,t.column3
From    @result as t
        Join
        (
            Select  Max(t.Id) As Id
            From    @result As t
        ) As t1 On t.id = t1.id