Rumah >pangkalan data >tutorial mysql >Mengapakah Subkueri SQL Saya Menghasilkan Ralat 'Hanya Satu Ungkapan Boleh Ditentukan dalam Senarai Pilihan'?
Menyelesaikan Masalah Ralat Subquery SQL: "Hanya Satu Ungkapan Boleh Ditentukan..."
Ralat ini, "Hanya satu ungkapan boleh ditentukan dalam senarai pilih apabila subkueri tidak diperkenalkan dengan EXISTS," timbul apabila pertanyaan SQL anda menggunakan subkueri dalam klausa IN
dan subkueri cuba mengembalikan berbilang lajur . Operator IN
hanya menerima satu lajur untuk perbandingan.
Mari kita periksa pertanyaan yang bermasalah:
<code class="language-sql">select count(distinct dNum) from myDB.dbo.AQ where A_ID in (SELECT DISTINCT TOP (0.1) PERCENT A_ID, COUNT(DISTINCT dNum) AS ud FROM myDB.dbo.AQ WHERE M > 1 and B = 0 GROUP BY A_ID ORDER BY ud DESC)</code>
Pernyataan SELECT
dalam dengan salah mengembalikan kedua-dua A_ID
dan COUNT(DISTINCT dNum) AS ud
. Ini melanggar peraturan untuk subkueri yang digunakan dengan IN
.
Pertanyaan yang Dibetulkan:
Penyelesaian melibatkan penstrukturan semula subkueri untuk mengembalikan hanya lajur A_ID
:
<code class="language-sql">select count(distinct dNum) from myDB.dbo.AQ where A_ID in (SELECT DISTINCT TOP (0.1) PERCENT A_ID FROM myDB.dbo.AQ WHERE M > 1 and B = 0 GROUP BY A_ID ORDER BY COUNT(DISTINCT dNum) DESC)</code>
Pertanyaan yang disemak ini kini memilih dengan betul hanya A_ID
dalam subkueri, menyelesaikan ralat. Pesanan oleh COUNT(DISTINCT dNum)
dikendalikan dalam subkueri itu sendiri, memastikan 10% teratas daripada nilai A_ID
(berdasarkan COUNT(DISTINCT dNum)
dipilih.
Atas ialah kandungan terperinci Mengapakah Subkueri SQL Saya Menghasilkan Ralat 'Hanya Satu Ungkapan Boleh Ditentukan dalam Senarai Pilihan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!