Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Kembali Baris Teratas dengan Cekap daripada Jadual Oracle Menggunakan `ORDER BY` dan `ROWNUM`?

Bagaimana untuk Mendapatkan Kembali Baris Teratas dengan Cekap daripada Jadual Oracle Menggunakan `ORDER BY` dan `ROWNUM`?

Susan Sarandon
Lepaskan: 2025-01-07 07:35:41
asal
993 orang telah melayarinya

How to Efficiently Retrieve the Top Row from an Oracle Table Using `ORDER BY` and `ROWNUM`?

Menggunakan Oracle ORDER BY dan ROWNUM Dengan Cekap

Dalam Oracle, pseudocolumn ROWNUM menyediakan cara untuk mendapatkan semula baris tertentu daripada set hasil berdasarkan urutan mereka. Walau bagaimanapun, menggunakan ROWNUM dengan ORDER BY boleh membawa kepada hasil yang tidak dijangka.

Untuk mendapatkan semula rekod terbaharu daripada jadual, pertanyaan SQL berikut biasanya digunakan dalam SQL Server:

SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
Salin selepas log masuk

Walau bagaimanapun , dalam Oracle, menggunakan pendekatan ini dengan ROWNUM seperti dalam pertanyaan berikut:

SELECT *
FROM raceway_input_labo 
WHERE  rownum <= 1
ORDER BY t_stamp DESC
Salin selepas log masuk

akan mendapatkan semula rekod tertua dan bukannya yang terbaru. Ini kerana ROWNUM dinilai sebelum ORDER BY dalam Oracle.

Untuk mendapatkan semula rekod terbaharu dengan berkesan menggunakan ROWNUM Oracle, gunakan subqueries seperti berikut:

SELECT * 
FROM 
    (SELECT *
     FROM raceway_input_labo 
     ORDER BY t_stamp DESC)
WHERE  rownum <= 1
Salin selepas log masuk

Pendekatan subkueri ini memastikan bahawa ORDER BY digunakan dahulu, menghasilkan output yang diingini.

Sebagai alternatif, lebih banyak penyelesaian serba boleh yang berfungsi dalam SQL Server dan Oracle boleh dilaksanakan menggunakan fungsi row_number():

select ril.*
from (select ril.*, row_number() over (order by t_stamp desc) as seqnum
      from raceway_input_labo ril
     ) ril
where seqnum = 1
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali Baris Teratas dengan Cekap daripada Jadual Oracle Menggunakan `ORDER BY` dan `ROWNUM`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan