Jadual Pangkalan Data Bercantum: Memilih Hanya Item Baris Pertama bagi setiap Pesanan
Dalam operasi pangkalan data, cabaran biasa timbul apabila menyertai jadual seperti Orders
dan LineItems
, di mana satu pesanan boleh mempunyai berbilang item baris yang berkaitan. Ini selalunya mengakibatkan data berlebihan dalam set hasil gabungan. Matlamatnya ialah untuk mendapatkan semula satu item baris setiap pesanan dengan cekap.
Pendekatan naif mungkin melibatkan penggunaan TOP 1
, tetapi ini boleh menyebabkan ralat tanpa rujukan jadual yang betul dalam subkueri.
Penyelesaian Berkesan: CROSS APPLY
dan JOIN
dengan ORDER BY
Dua kaedah teguh menangani perkara ini dengan berkesan:
Kaedah 1: Menggunakan CROSS APPLY
Pendekatan ini menggunakan CROSS APPLY
untuk menyertai jadual Orders
dengan subkueri yang memilih item baris teratas untuk setiap pesanan:
<code class="language-sql">SELECT Orders.OrderNumber, LineItems2.Quantity, LineItems2.Description FROM Orders CROSS APPLY ( SELECT TOP 1 LineItems.Quantity, LineItems.Description FROM LineItems WHERE LineItems.OrderID = Orders.OrderID ) LineItems2;</code>
Kaedah 2: Menggunakan JOIN
dengan ORDER BY
Kaedah ini menggunakan klausa JOIN
, dengan syarat cantum memilih LineItemGUID
daripada subkueri yang memesan item baris dan memilih yang teratas untuk setiap pesanan:
<code class="language-sql">SELECT Orders.OrderNumber, LineItems.Quantity, LineItems.Description FROM Orders JOIN LineItems ON LineItems.LineItemGUID = ( SELECT TOP 1 LineItemGUID FROM LineItems WHERE OrderID = Orders.OrderID ORDER BY LineItemGUID );</code>
Kedua-dua kaedah memastikan bahawa hanya satu item baris dikembalikan untuk setiap pesanan. Yang penting, termasuk klausa ORDER BY
dalam subkueri adalah penting untuk hasil yang menentukan. Meninggalkan ORDER BY
dengan TOP 1
membawa kepada hasil yang tidak dapat diramalkan, kerana item baris "pertama" mungkin berbeza-beza merentas pelaksanaan pertanyaan. Menggunakan ORDER BY
menjamin pemilihan item baris tertentu yang konsisten berdasarkan kriteria pesanan yang dipilih.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Memilih Item Baris Pertama untuk Setiap Pesanan Apabila Menyertai Jadual Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!