Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan Ralat 'Subquery Returned More than 1 Value' dalam SQL Server?

Bagaimana untuk Menyelesaikan Ralat 'Subquery Returned More than 1 Value' dalam SQL Server?

Barbara Streisand
Lepaskan: 2025-01-17 15:21:09
asal
425 orang telah melayarinya

How to Resolve the

Menyelesaikan masalah Ralat "Subquery Returned More than One Value" dalam SQL Server

Subkueri SQL Server yang digunakan dalam operator perbandingan (seperti '=') mesti menghasilkan satu nilai. Berbilang nilai mencetuskan ralat: "Subquery mengembalikan lebih daripada 1 nilai." Mari terokai penyelesaian.

Langkah Nyahpepijat:

  1. Pengesahan Keputusan Subkueri: Subkueri hendaklah mengembalikan hanya satu baris dan satu lajur. Periksa dengan teliti pertanyaan untuk data samar-samar atau pendua yang boleh menghasilkan berbilang hasil.

  2. Semakan Syarat Sertai: Pastikan syarat gabungan antara pertanyaan utama dan subkueri mewujudkan hubungan satu dengan satu. Alih keluar kriteria penyertaan yang berlebihan atau tidak perlu.

  3. Fungsi Agregat/Pengumpulan: Jika subkueri anda menggunakan agregat (seperti SUM, AVG, COUNT) atau fungsi pengumpulan, sahkan aplikasinya yang betul dan ia menjana satu nilai output.

Contoh dan Penyelesaian:

Contoh yang disediakan menunjukkan subkueri yang mengembalikan berbilang nilai kos, menyebabkan ralat. Penyelesaian menggunakan TOP 1 untuk menyekat output subquery kepada satu baris:

<code class="language-sql">SELECT
    orderdetails.sku,
    orderdetails.mf_item_number,
    orderdetails.qty,
    orderdetails.price,
    supplier.supplierid,
    supplier.suppliername,
    supplier.dropshipfees,
    cost = (SELECT TOP 1 supplier_item.price
           FROM   supplier_item
           WHERE  supplier_item.sku = orderdetails.sku
                  AND supplier_item.supplierid = supplier.supplierid)
FROM   orderdetails
       INNER JOIN supplier ON supplier.supplierid = orderdetails.mfr_id
       INNER JOIN group_master ON group_master.sku = orderdetails.sku  
WHERE  invoiceid = '339740'</code>
Salin selepas log masuk

Menggunakan TOP 1 menjamin hanya satu baris (dan dengan itu satu harga) dikembalikan, menyelesaikan ralat. Ambil perhatian bahawa TOP 1 tanpa klausa ORDER BY mengembalikan baris arbitrari; pertimbangkan untuk menambah ORDER BY untuk hasil yang konsisten jika pesanan itu penting.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Subquery Returned More than 1 Value' dalam SQL Server?. 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