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:
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.
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.
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>
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!