Rumah > pangkalan data > tutorial mysql > Mengapakah Subkueri SQL Saya Menghasilkan Ralat 'Hanya Satu Ungkapan Boleh Ditentukan dalam Senarai Pilihan'?

Mengapakah Subkueri SQL Saya Menghasilkan Ralat 'Hanya Satu Ungkapan Boleh Ditentukan dalam Senarai Pilihan'?

Linda Hamilton
Lepaskan: 2025-01-11 13:36:42
asal
387 orang telah melayarinya

Why Does My SQL Subquery Produce

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:

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

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:

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

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!

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