Apa cara paling efisien untuk membaca baris terakhir dengan SQL Server?
Tabel diindeks dengan kunci unik - nilai kunci "bawah" mewakili baris terakhir.
sql
sql-server
rp.
sumber
sumber
SELECT TOP 1000 * FROM table_name ORDER BY column_name DESC
dan harus mengeluarkan 1000 record terakhir.select whatever,columns,you,want from mytable where mykey=(select max(mykey) from mytable);
sumber
mykey
adalah indeks tabel Andamykey
pengenal unik, pendekatan ini tidak akan membantuAnda 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 column
memberitahu itu untuk menyusun ulang hasil menurut data kolom itu, danDESC
memberitahu itu untuk membalikkan hasil (sehingga menempatkan yang terakhir terlebih dahulu). Setelah itu, perintahLIMIT 1
untuk hanya mundur satu baris.sumber
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)
sumber
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 ... :)
sumber
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)
sumber
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
sumber
Coba ini
SELECT id from comission_fees ORDER BY id DESC LIMIT 1
sumber
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;
sumber
select top 1
Tanpa 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
danFETCH 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 danFETCH
argumen 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
sumber
SELECT * from Employees where [Employee ID] = ALL (SELECT MAX([Employee ID]) from Employees)
sumber
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 )
sumber
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
sumber
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')
sumber
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.
sumber
SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)
sumber
Saya cukup yakin bahwa ini:
SELECT last(column_name) FROM table
Karena saya menggunakan yang serupa:
SELECT last(id) FROM Status
sumber