Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengehadkan Gabungan SQL kepada Hanya Baris Pertama Jadual Berkaitan?

Bagaimana untuk Mengehadkan Gabungan SQL kepada Hanya Baris Pertama Jadual Berkaitan?

Linda Hamilton
Linda Hamiltonasal
2025-01-17 06:08:09831semak imbas

How to Limit SQL Joins to Only the First Row of a Related Table?

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!

Kenyataan:
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