Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengehadkan Gabungan SQL kepada Hanya Baris Pertama Jadual Berkaitan?
Menghadkan Gabungan SQL kepada Baris Berkaitan Pertama
Menyertakan berbilang jadual dalam SQL dengan cekap adalah penting, tetapi kadangkala kita hanya memerlukan baris pertama daripada jadual yang berkaitan. Artikel ini menunjukkan cara mengehadkan gabungan kepada satu baris, mengelakkan baris pendua apabila berurusan dengan perhubungan satu dengan banyak.
Mari kita periksa senario biasa:
Kami mempunyai dua meja, Orders
dan LineItems
. Walaupun kebanyakan pesanan mempunyai satu item baris, sesetengah mungkin mempunyai berbilang. Standard INNER JOIN
akan membawa kepada baris pesanan pendua jika wujud berbilang item baris.
Untuk mengelakkan perkara ini, kami akan mengehadkan penyertaan kepada hanya LineItems
baris pertama bagi setiap pesanan. Berikut adalah dua kaedah yang berkesan:
Menggunakan CROSS APPLY (SQL Server 2005 dan lebih baru):
Pendekatan ini menawarkan penyelesaian yang lebih bersih dan mudah dibaca:
<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>
Menggunakan Inner Join dengan Subquery (SQL Server pra-2005):
Untuk versi SQL Server yang lebih lama, kaedah ini mencapai hasil yang sama:
<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 )</code>
Pertimbangan Penting: TOP 1
tanpa ORDER BY
menghasilkan keputusan yang tidak pasti. Untuk memilih baris tertentu secara konsisten, sentiasa sertakan klausa ORDER BY
dalam pertanyaan dalaman untuk menentukan kriteria pengisihan yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Mengehadkan Gabungan SQL kepada Hanya Baris Pertama Jadual Berkaitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!