집 >데이터 베이스 >MySQL 튜토리얼 >내 MySQL 쿼리가 '피연산자는 1개의 열을 포함해야 합니다'를 반환하는 이유는 무엇이며 어떻게 해결할 수 있습니까?
MySQL 쿼리 오류: "피연산자는 1개의 열을 포함해야 합니다."
문제 설명:
여러 테이블을 조인하고 하위 쿼리(다른 테이블의 열 선택)를 포함하는 MySQL 쿼리를 실행하는 동안 오류가 발생했습니다. "#1241 - 피연산자는 1개의 열을 포함해야 합니다."
쿼리:
<code class="language-sql">SELECT topics.id, topics.name, topics.post_count, topics.view_count, COUNT( posts.solved_post ) AS solved_post, (SELECT users.username AS posted_by, users.id AS posted_by_id FROM users WHERE users.id = posts.posted_by) FROM topics LEFT OUTER JOIN posts ON posts.topic_id = topics.id WHERE topics.cat_id = :cat GROUP BY topics.id</code>
오류 이유:
오류는 하위 쿼리가 users
테이블에서 두 개의 열(username
및 id
)을 선택하고 외부 쿼리에서는 하위 쿼리가 단일 열만 반환할 것으로 예상하기 때문에 발생합니다.
해결책:
이 오류를 해결하는 방법에는 두 가지가 있습니다.
하위 쿼리 수정:
username
열 또는 id
열만 반환하도록 하위 쿼리를 수정합니다. users
테이블 연결:
posted_by
열을 사용하여 users
테이블을 posts
테이블에 직접 조인하세요. 이 접근 방식은 users
테이블에서 필요한 열을 선택할 때 더 많은 유연성을 제공합니다. 수정된 쿼리:
하위 쿼리 사용:
<code class="language-sql">SELECT topics.id, topics.name, topics.post_count, topics.view_count, COUNT( posts.solved_post ) AS solved_post, (SELECT users.username AS posted_by FROM users WHERE users.id = posts.posted_by) FROM topics LEFT OUTER JOIN posts ON posts.topic_id = topics.id WHERE topics.cat_id = :cat GROUP BY topics.id</code>
연결 사용:
<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>
위 내용은 내 MySQL 쿼리가 '피연산자는 1개의 열을 포함해야 합니다'를 반환하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!