Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Cekap Memilih Item Baris Pertama untuk Setiap Pesanan Apabila Menyertai Jadual Pangkalan Data?

Bagaimana untuk Cekap Memilih Item Baris Pertama untuk Setiap Pesanan Apabila Menyertai Jadual Pangkalan Data?

Susan Sarandon
Lepaskan: 2025-01-17 06:13:09
asal
170 orang telah melayarinya

How to Efficiently Select Only the First Line Item for Each Order When Joining Database Tables?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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