Apa cara paling efisien untuk membaca baris terakhir dengan SQL Server?
Tabel diindeks dengan kunci unik - nilai kunci "bawah" mewakili baris terakhir.
Jawaban:
Jika Anda menggunakan MS SQL, Anda dapat mencoba:
SELECT TOP 1 * FROM table_Name ORDER BY unique_column DESC
SELECT TOP 1000 * FROM table_name ORDER BY column_name DESCdan harus mengeluarkan 1000 record terakhir.
select whatever,columns,you,want from mytable
where mykey=(select max(mykey) from mytable);
mykeyadalah indeks tabel Anda
mykeypengenal unik, pendekatan ini tidak akan membantu
Anda akan memerlukan semacam kolom pengidentifikasi unik di tabel Anda, seperti kunci utama yang mengisi otomatis atau kolom waktu (sebaiknya kunci utama). Kemudian Anda bisa melakukan ini:
SELECT * FROM table_name ORDER BY unique_column DESC LIMIT 1
The ORDER BY columnmemberitahu itu untuk menyusun ulang hasil menurut data kolom itu, dan DESCmemberitahu itu untuk membalikkan hasil (sehingga menempatkan yang terakhir terlebih dahulu). Setelah itu, perintah LIMIT 1untuk hanya mundur satu baris.
Jika beberapa id Anda sudah beres, saya berasumsi akan ada beberapa order di db Anda
SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)
Saya pikir kueri di bawah ini akan berfungsi untuk SQL Server dengan kinerja maksimum tanpa kolom yang dapat diurutkan
SELECT * FROM table
WHERE ID not in (SELECT TOP (SELECT COUNT(1)-1
FROM table)
ID
FROM table)
Harap Anda mengerti ... :)
Saya mencoba menggunakan kueri sql terakhir di SQl server 2008 tetapi memberikan kesalahan ini: "'terakhir' bukan nama fungsi bawaan yang dikenali."
Jadi saya akhirnya menggunakan:
select max(WorkflowStateStatusId) from WorkflowStateStatus
untuk mendapatkan Id baris terakhir. Bisa juga digunakan
Declare @i int
set @i=1
select WorkflowStateStatusId from Workflow.WorkflowStateStatus
where WorkflowStateStatusId not in (select top (
(select count(*) from Workflow.WorkflowStateStatus) - @i ) WorkflowStateStatusId from .WorkflowStateStatus)
Anda dapat menggunakan nilai_akhir: SELECT LAST_VALUE(column) OVER (PARTITION BY column ORDER BY column)...
Saya mengujinya di salah satu database saya dan berfungsi seperti yang diharapkan.
Anda juga dapat memeriksa dokumentasi de di sini: https://msdn.microsoft.com/en-us/library/hh231517.aspx
Coba ini
SELECT id from comission_fees ORDER BY id DESC LIMIT 1
LIMIT. Ini mengembalikanIncorrect syntax near LIMIT
Untuk mendapatkan kembali baris terakhir dari tabel untuk database MS SQL 2005, Anda dapat menggunakan kueri berikut ini:
select top 1 column_name from table_name order by column_name desc;
Catatan: Untuk mendapatkan baris pertama tabel untuk database MS SQL 2005, Anda dapat menggunakan kueri berikut ini:
select top 1 column_name from table_name;
select top 1Tanpa order by bukanlah cara yang dapat diandalkan untuk mendapatkan rekor pertama. Jika Anda tidak memesan dengan, Anda memberi izin kepada SQL untuk memberi Anda catatan apa pun yang diinginkan.
OFFSET dan FETCH NEXT merupakan fitur SQL Server 2012 untuk mencapai paging SQL saat menampilkan hasil.
Itu OFFSET argumen digunakan untuk menentukan baris mulai baris kembali dari hasil dan FETCHargumen yang digunakan untuk mengembalikan satu set jumlah baris.
SELECT *
FROM table_name
ORDER BY unique_column desc
OFFSET 0 Row
FETCH NEXT 1 ROW ONLY
Ini adalah cara Anda mendapatkan rekaman terakhir dan memperbarui bidang di Access DB.
MEMPERBARUI compalints SET tkt = addzone &'-'& customer_code &'-'& sn where sn in (select max(sn) from compalints )
Jika Anda tidak memiliki kolom berurutan, Anda dapat menggunakan id fisik setiap baris:
SELECT top 1 sys.fn_PhysLocFormatter(%%physloc%%) AS [File:Page:Slot],
T.*
FROM MyTable As T
order by sys.fn_PhysLocFormatter(%%physloc%%) DESC
Jika Anda memiliki tabel direplikasi, Anda dapat memiliki Identity = 1000 di localDatabase dan Identity = 2000 di clientDatabase, jadi jika Anda menangkap ID terakhir Anda mungkin selalu menemukan yang terakhir dari klien, bukan yang terakhir dari database yang terhubung saat ini. Jadi metode terbaik yang mengembalikan database terhubung terakhir adalah:
SELECT IDENT_CURRENT('tablename')
Saya tidak mendapatkan "nilai terakhir" dalam tabel, saya mendapatkan nilai terakhir per instrumen keuangan. Ini tidak sama tapi saya rasa ini relevan untuk beberapa orang yang mencari untuk mencari "bagaimana hal itu dilakukan sekarang". Saya juga menggunakan RowNumber () dan CTE dan sebelumnya hanya mengambil 1 dan memesan berdasarkan [kolom] desc. namun kita tidak perlu lagi ...
Saya menggunakan SQL server 2017, kami mencatat semua tick di semua bursa secara global, kami memiliki ~ 12 miliar tick sehari, kami menyimpan setiap Bid, ask, dan trade termasuk volume dan atribut tick (bid, ask, trade ) dari salah satu bursa yang diberikan.
Kami memiliki 253 jenis data tick untuk kontrak tertentu (kebanyakan statistik) di tabel itu, harga terakhir yang diperdagangkan adalah jenis tick = 4 jadi, ketika kita perlu mendapatkan "terakhir" dari Harga yang kita gunakan:
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
Anda dapat melihat rencana eksekusi pada sistem dev saya yang dijalankan dengan cukup efisien, dijalankan dalam 4 detik sementara ETL impor pertukaran memompa data ke dalam tabel, akan ada beberapa penguncian yang memperlambat saya ... begitulah cara kerja sistem langsung.

SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)