How to read the last row with SQL Server

后端 未结 17 746
别那么骄傲
别那么骄傲 2020-11-29 03:40

What is the most efficient way to read the last row with SQL Server?

The table is indexed on a unique key -- the \"bottom\" key values represent the last row.

相关标签:
17条回答
  • 2020-11-29 04:08

    Try this

    SELECT id from comission_fees ORDER BY id DESC LIMIT 1
    
    0 讨论(0)
  • 2020-11-29 04:08

    OFFSET and FETCH NEXT are a feature of SQL Server 2012 to achieve SQL paging while displaying results.

    The OFFSET argument is used to decide the starting row to return rows from a result and FETCH argument is used to return a set of number of rows.

    SELECT *
    FROM table_name
    ORDER BY unique_column desc
    OFFSET 0 Row
    FETCH NEXT 1 ROW ONLY
    
    0 讨论(0)
  • 2020-11-29 04:13

    I think below query will work for SQL Server with maximum performance without any sortable column

    SELECT * FROM table 
    WHERE ID not in (SELECT TOP (SELECT COUNT(1)-1 
                                 FROM table) 
                            ID 
                     FROM table)
    

    Hope you have understood it... :)

    0 讨论(0)
  • 2020-11-29 04:14

    If you have a Replicated table, you can have an Identity=1000 in localDatabase and Identity=2000 in the clientDatabase, so if you catch the last ID you may find always the last from client, not the last from the current connected database. So the best method which returns the last connected database is:

    SELECT IDENT_CURRENT('tablename')
    
    0 讨论(0)
  • 2020-11-29 04:15

    This is how you get the last record and update a field in Access DB.

    UPDATE compalints SET tkt = addzone &'-'& customer_code &'-'& sn where sn in (select max(sn) from compalints )

    0 讨论(0)
  • 2020-11-29 04:15

    Well I'm not getting the "last value" in a table, I'm getting the Last value per financial instrument. It's not the same but I guess it is relevant for some that are looking to look up on "how it is done now". I also used RowNumber() and CTE's and before that to simply take 1 and order by [column] desc. however we nolonger need to...

    I am using SQL server 2017, we are recording all ticks on all exchanges globally, we have ~12 billion ticks a day, we store each Bid, ask, and trade including the volumes and the attributes of a tick (bid, ask, trade) of any of the given exchanges.

    We have 253 types of ticks data for any given contract (mostly statistics) in that table, the last traded price is tick type=4 so, when we need to get the "last" of Price we use :

    select distinct T.contractId,
    LAST_VALUE(t.Price)over(partition by t.ContractId order by created ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
    from [dbo].[Tick] as T
    where T.TickType=4
    

    You can see the execution plan on my dev system it executes quite efficient, executes in 4 sec while the exchange import ETL is pumping data into the table, there will be some locking slowing me down... that's just how live systems work.

    0 讨论(0)
提交回复
热议问题