Rumah > pangkalan data > tutorial mysql > Mengapa Subquery SQL Saya Mengembalikan 'Hanya satu ungkapan boleh ditentukan dalam senarai pilih apabila subquery tidak diperkenalkan dengan EXISTS'?

Mengapa Subquery SQL Saya Mengembalikan 'Hanya satu ungkapan boleh ditentukan dalam senarai pilih apabila subquery tidak diperkenalkan dengan EXISTS'?

Mary-Kate Olsen
Lepaskan: 2025-01-11 13:32:44
asal
506 orang telah melayarinya

Why Does My SQL Subquery Return

SQL subquery pilih sekatan senarai

Apabila anda menghadapi ralat "Apabila subquery tidak bermula dengan EXISTS, hanya satu ungkapan boleh ditentukan dalam senarai pilih", ini bermakna terdapat masalah dengan nilai pulangan subquery. Dalam subkueri yang bersarang dalam klausa WHERE IN, adalah penting untuk memastikan bahawa hanya satu lajur dikembalikan untuk dibandingkan dengan bahagian lain IN.

Pertanyaan yang diberikan pada mulanya mengandungi subkueri yang mengembalikan A_ID dan COUNT(DISTINCT dNum) sebagai ud. Walau bagaimanapun, dalam klausa WHERE IN, subkueri hanya boleh mengembalikan satu lajur, yang akan dibandingkan dengan A_ID dalam pertanyaan utama. Sebab had ini wujud ialah fungsi subkueri adalah untuk mengembalikan senarai nilai untuk menyemak sama ada A_ID dalam pertanyaan utama sepadan dengan sebarang nilai dalam hasil subkueri.

Untuk menyelesaikan masalah ini, ubah suai subquery untuk mengembalikan hanya lajur A_ID, yang akan dibandingkan dengan A_ID dalam klausa WHERE IN pertanyaan utama. Selain itu, pengisihan boleh digunakan dalam klausa ORDER untuk memilih baris daripada subkueri tanpa mengembalikan COUNT sebagai lajur.

Contoh pertanyaan yang diperbetulkan:

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

Dengan melaksanakan perubahan ini, pertanyaan boleh mengembalikan hasil yang diingini dengan betul sambil mematuhi peraturan mengembalikan satu lajur untuk perbandingan WHERE IN.

Atas ialah kandungan terperinci Mengapa Subquery SQL Saya Mengembalikan 'Hanya satu ungkapan boleh ditentukan dalam senarai pilih apabila subquery tidak diperkenalkan dengan EXISTS'?. 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