Search code examples
mysqlsqlmysql-error-1241

Operand Should Contain 1 Column - MySQL NOT 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)

I get the error "Operand Should Contain 1 Column" - but I need the COUNT(e.id)


Solution

  • There's always this:

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