집 >데이터 베이스 >MySQL 튜토리얼 >MySQL의 NOT IN 하위 쿼리에서 '피연산자는 1개의 열을 포함해야 합니다' 오류를 수정하는 방법은 무엇입니까?
NOT IN 하위 쿼리의 MySQL "Operand Should Contain 1 Column" 오류: 해결 방법
MySQL의 NOT IN
절에서는 하위 쿼리가 단일 열을 반환해야 합니다. 다음 쿼리는 하위 쿼리가 여러 열을 반환하기 때문에 "피연산자는 1개의 열을 포함해야 합니다." 오류를 생성합니다.
<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>
하위 쿼리 내에서 여러 필드(예: e.id_campaign
, d.name
, d.frequency
등)를 선택하는 데 문제가 있습니다. NOT IN
비교를 위해 단일 열이 필요합니다.
해결책: 파생 테이블 사용
이를 수정하려면 파생 테이블(FROM
절의 하위 쿼리)을 사용하여 관련 열을 격리할 수 있습니다.
<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>
이 수정된 쿼리는 subquery
이라는 파생 테이블을 사용합니다. 이 내부 쿼리는 원래 논리를 수행하지만 e.id_campaign
(별칭 id_campaign
)만 선택하여 외부 NOT IN
절이 단일 열 결과 집합을 받도록 하여 오류를 해결합니다. frequency
및 countcap
을 기반으로 한 원래 필터링 논리는 파생 테이블 내에 유지됩니다.
위 내용은 MySQL의 NOT IN 하위 쿼리에서 '피연산자는 1개의 열을 포함해야 합니다' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!