> 데이터 베이스 > MySQL 튜토리얼 > 내 MySQL 쿼리가 '피연산자는 1개의 열을 포함해야 합니다.' 오류를 반환하는 이유는 무엇입니까?

내 MySQL 쿼리가 '피연산자는 1개의 열을 포함해야 합니다.' 오류를 반환하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-12 15:26:43
원래의
498명이 탐색했습니다.

Why Does My MySQL Query Return an

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿