MySQL NOT IN-Abfrage fehlgeschlagen: Operand sollte 1 Spalte enthalten
Wenn Sie in einer MySQL NOT IN-Abfrage auf den Fehler „Operand sollte 1 Spalte enthalten“ stoßen, ist es wichtig, die Grundursache zu verstehen.
Dieser Fehler tritt auf, weil der Operand der NOT IN-Bedingung mehrere Spalten enthält:
<code class="language-sql">SELECT * from campaigns WHERE id not in ( SELECT e.id_campaign, d.name, d.frequency, d.country, d.referral, d.bid, d.status, COUNT(e.id) AS countcap </code>
Der NOT IN-Operator erfordert, dass sein Operand eine einzelne Spalte ist, während die Unterabfrage Zeilen zurückgibt, die mehrere Spalten enthalten.
Lösung:
Eine Möglichkeit, diesen Fehler zu beheben, besteht darin, die erforderlichen Spalten aus der Unterabfrage zu extrahieren und sie mit der ID-Spalte der äußeren Abfrage zu vergleichen:
<code class="language-sql">select * from campaigns where id not in ( select id_campaign from ( select e.id_campaign as id_campaign, d.frequency, e.id from campaigns d left join served e on d.id = e.id_campaign where d.status = 'Active' group by e.id_campaign having count(e.id) < d.frequency ) as subquery )</code>
Stellt die korrekte Verwendung des id_campaign
-Operators sicher, indem die Unterabfrageergebnisse auf eine einzelne Spalte NOT IN
beschränkt werden. Zusätzlich haben wir einen Alias as subquery
für die Unterabfrage hinzugefügt, der in einigen MySQL-Versionen notwendig ist. Dies verbessert die Klarheit und Lesbarkeit der Abfrage.
Das obige ist der detaillierte Inhalt vonMySQL NOT IN-Fehler: Warum sollte „Operand 1 Spalte enthalten'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!