MySQL 오류: "피연산자는 1개의 열을 포함해야 합니다" 문제 수정
MySQL 쿼리에서 '피연산자는 1개의 열을 포함해야 합니다.' 오류가 발생했습니다. 이 오류는 일반적으로 하위 쿼리가 여러 열을 반환하지만 외부 쿼리에서는 해당 위치에 단일 열만 필요한 경우에 발생합니다.
이해 오류:
오류가 발생한 쿼리에 하위 쿼리가 포함되어 있습니다:
<code class="language-sql">(SELECT users.username AS posted_by, users.id AS posted_by_id FROM users WHERE users.id = posts.posted_by)</code>
이 하위 쿼리는 "posted_by" 및 "posted_by_id"라는 두 개의 열을 검색합니다. 그러나 이 하위 쿼리를 외부 쿼리의 단일 열로 사용합니다.
<code class="language-sql">COUNT( posts.solved_post ) AS solved_post, (SUBQUERY)</code>
외부 쿼리는 이 위치에 단일 열을 예상하기 때문에 이러한 불일치로 인해 "피연산자는 1개의 열을 포함해야 합니다." 오류가 발생합니다.
해결책:
방법 1: 테이블 연결 사용
이 문제를 해결하려면 하위 쿼리를 사용하는 대신 "users" 테이블에 직접 조인하는 것이 좋습니다. 이렇게 하면 단일 열 제약 조건을 위반하지 않고 "posted_by" 및 "posted_by_id" 열을 명시적으로 선택할 수 있습니다.
<code class="language-sql">SELECT topics.id, topics.name, topics.post_count, topics.view_count, COUNT( posts.solved_post ) AS solved_post, users.username AS posted_by, users.id AS posted_by_id FROM topics LEFT OUTER JOIN posts ON posts.topic_id = topics.id LEFT OUTER JOIN users ON users.id = posts.posted_by WHERE topics.cat_id = :cat GROUP BY topics.id</code>
방법 2: 하위 쿼리에서 단일 열 선택
또는 하위 쿼리 사용을 고집하는 경우 필수 열만 반환하도록 수정할 수 있습니다. 예를 들어 "posted_by" 열만 검색할 수 있습니다.
<code class="language-sql">(SELECT users.username AS posted_by FROM users WHERE users.id = posts.posted_by)</code>
하위 쿼리에서 단일 열을 선택하면 해당 열이 외부 쿼리의 단일 열 요구 사항을 충족하는지 확인할 수 있습니다.
위 내용은 내 MySQL 쿼리가 '피연산자는 1개의 열을 포함해야 합니다.' 오류를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!