복붙노트

[SQL] MySQL의 NOT IN - 피연산자 1 열을 포함해야한다

SQL

MySQL의 NOT IN - 피연산자 1 열을 포함해야한다

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)

내가 오류 "피연산자해야 1 열이 포함"얻을 -하지만 난 COUNT 필요 (e.id)

해결법

  1. ==============================

    1.항상이있다 :

    항상이있다 :

    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 
        )
    )
    
  2. ==============================

    2.는 '하지의'절은 값 목록을 기대하고있다. 그래서, 다음과 같은 쿼리가 작동합니다 :

    는 '하지의'절은 값 목록을 기대하고있다. 그래서, 다음과 같은 쿼리가 작동합니다 :

    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)
    

    당신이 우리에게 당신이 선택하려는 테이블의 구조와 무엇을 말할 수 있다면, 우리는 당신을 위해 올바른 쿼리를 알아낼 수 있습니다.

  3. ==============================

    3.

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

    당신은 그리에서 ID를 확인하는, 당신은 체크 ID에 대해 하나의 열을 확인해야합니다.

    당신은 (그것은 당신의 목적을 성취 할 수 없습니다)이 쓸 수 있습니다 :

    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
        countcap < d.frequency
    )
    
  4. from https://stackoverflow.com/questions/6318208/operand-should-contain-1-column-mysql-not-in by cc-by-sa and MIT license