Heim > Datenbank > MySQL-Tutorial > Warum erzeugt meine SQL-Unterabfrage den Fehler „In der Auswahlliste kann nur ein Ausdruck angegeben werden'?

Warum erzeugt meine SQL-Unterabfrage den Fehler „In der Auswahlliste kann nur ein Ausdruck angegeben werden'?

Linda Hamilton
Freigeben: 2025-01-11 13:36:42
Original
365 Leute haben es durchsucht

Why Does My SQL Subquery Produce

Fehlerbehebung bei SQL-Unterabfragefehlern: „Nur ein Ausdruck kann angegeben werden …“

Dieser Fehler „In der Auswahlliste kann nur ein Ausdruck angegeben werden, wenn die Unterabfrage nicht mit EXISTS eingeführt wird“ tritt auf, wenn Ihre SQL-Abfrage eine Unterabfrage innerhalb einer IN-Klausel verwendet und die Unterabfrage versucht, mehrere Spalten zurückzugeben . Der IN-Operator akzeptiert nur eine einzelne Spalte zum Vergleich.

Lassen Sie uns die problematische Abfrage untersuchen:

<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>
Nach dem Login kopieren

Die innere SELECT-Anweisung gibt fälschlicherweise sowohl A_ID als auch COUNT(DISTINCT dNum) AS ud zurück. Dies verstößt gegen die Regel für Unterabfragen, die mit IN.

verwendet werden

Die korrigierte Abfrage:

Die Lösung besteht darin, die Unterabfrage so umzustrukturieren, dass nur die Spalte A_ID zurückgegeben wird:

<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>
Nach dem Login kopieren

Diese überarbeitete Abfrage wählt jetzt korrekt nur A_ID in der Unterabfrage aus, wodurch der Fehler behoben wird. Die Sortierung nach COUNT(DISTINCT dNum) erfolgt innerhalb der Unterabfrage selbst, wodurch sichergestellt wird, dass die obersten 10 % der A_ID-Werte (basierend auf COUNT(DISTINCT dNum)) ausgewählt werden.

Das obige ist der detaillierte Inhalt vonWarum erzeugt meine SQL-Unterabfrage den Fehler „In der Auswahlliste kann nur ein Ausdruck angegeben werden'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage