Operand sollte 1 Spalte enthalten – MySQL NICHT IN

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 FROM campaigns d LEFT JOIN served e ON d.id = e.id_campaign WHERE d.status = 'Active' GROUP BY e.id_campaign HAVING countcap < d.frequency) 

Ich bekomme den Fehler “Operand sollte 1 Spalte enthalten” – aber ich brauche den COUNT (e.id)

Es gibt immer das:

 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 ) ) 

Die ‘not in’ Klausel erwartet eine Liste von Werten. Eine Abfrage wie die folgende funktioniert also:

 SELECT * from campaigns WHERE id not in (SELECT e.id_campaign 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) 

Wenn Sie uns die Struktur von Tabellen und was Sie auswählen möchten, können wir die richtige Abfrage für Sie herausfinden.