MySQL NOT IN
하위 쿼리의 여러 열로 인해 발생하는 "작업에 1개의 열이 포함되어야 합니다." 오류
여러 열이 포함된 하위 쿼리의 NOT IN
절을 사용할 때 "피연산자는 1개의 열을 포함해야 합니다." 오류가 발생하는 것이 일반적입니다. 이 오류는 NOT IN
절에서 하위 쿼리가 단일 열만 반환할 것으로 예상한다는 제한으로 인해 발생합니다.
제공된 쿼리에서:
<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 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 )</code>
하위 쿼리는 8개의 열(id_campaign, 이름, 빈도, 국가, 추천, 입찰, 상태 및 개수 한도)을 반환합니다. 그러나 NOT IN
절에는 비교를 위해 단일 열이 필요합니다.
해결책:
이 오류를 해결하려면 기본 쿼리에서 비멤버십을 확인하려는 열인 id_campaign
열만 반환하도록 하위 쿼리를 수정해야 합니다.
<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>
하위 쿼리 결과를 단일 열로 제한하여 id_campaign
"피연산자는 1개의 열을 포함해야 합니다." 오류를 제거하고 NOT IN
절이 비교를 올바르게 수행하는지 확인합니다. 쿼리를 보다 명확하게 구성하기 위해 별칭 subquery
을 추가했습니다. 이 수정된 쿼리는 하위 쿼리 결과에 campaigns
이 없는 id
테이블의 행만 반환합니다.
위 내용은 여러 열이 포함된 MySQL 'NOT IN' 하위 쿼리가 '피연산자는 1개의 열을 포함해야 합니다'를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!