>데이터 베이스 >MySQL 튜토리얼 >하위 쿼리에서 MySQL의 '피연산자는 1개의 열을 포함해야 합니다' 오류를 수정하는 방법은 무엇입니까?

하위 쿼리에서 MySQL의 '피연산자는 1개의 열을 포함해야 합니다' 오류를 수정하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-12 15:13:45595검색

How to Fix MySQL's

MySQL의 "피연산자는 1개의 열을 포함해야 합니다." 오류 문제 해결

데이터베이스 개발 중에 MySQL 오류가 발생하는 것은 흔한 일입니다. 이러한 오류 중 하나인 "'#1241 - 피연산자는 1개의 열을 포함해야 합니다.'"는 여러 열을 반환하는 하위 쿼리를 사용할 때 자주 발생합니다. 이는 일반적으로 하위 쿼리가 단일 열 결과를 기대하는 외부 쿼리에 둘 이상의 열을 제공할 때 발생합니다.

문제 분석

오류 메시지는 하위 쿼리에서 반환된 열 수와 기본 쿼리의 예상 열 수가 호환되지 않음을 나타냅니다. 외부 SELECT 문은 다중 열 하위 쿼리 결과를 단일 값인 것처럼 사용하려고 시도합니다.

솔루션

이 오류는 쿼리 구조를 조정하여 해결할 수 있습니다. 다음은 두 가지 효과적인 접근 방식입니다.

  1. 직접 테이블 조인: 하위 쿼리를 중첩하는 대신 관련 테이블을 직접 조인합니다. 이를 통해 특정 열을 선택할 때 더 많은 제어력과 유연성을 얻을 수 있습니다.
<code class="language-sql">SELECT
    t.id,
    t.name,
    t.post_count,
    t.view_count,
    COUNT(p.solved_post) AS solved_post,
    u.username AS posted_by,
    u.id AS posted_by_id
FROM
    topics t
LEFT OUTER JOIN
    posts p ON p.topic_id = t.id
LEFT OUTER JOIN
    users u ON u.id = p.posted_by
WHERE
    t.cat_id = :cat
GROUP BY
    t.id;</code>
  1. 단일 열 하위 쿼리: 하위 쿼리를 유지하려면 하위 쿼리를 수정하여 하나의 열만 반환하세요. 여기에는 집계 함수(예: MAX(), MIN(), AVG())를 사용하거나 users 테이블
  2. 에서 특정 열을 선택하는 작업이 포함될 수 있습니다.
<code class="language-sql">SELECT
    t.id,
    t.name,
    t.post_count,
    t.view_count,
    COUNT(p.solved_post) AS solved_post,
    (SELECT u.username FROM users u WHERE u.id = p.posted_by) AS posted_by_username
FROM
    topics t
LEFT OUTER JOIN
    posts p ON p.topic_id = t.id
GROUP BY
    t.id;</code>

이러한 솔루션 중 하나를 구현하면 피연산자 오류를 수정하고 MySQL 데이터베이스에서 필요한 데이터를 정확하게 검색할 수 있습니다. 최상의 솔루션 선택은 특정 데이터 요구 사항 및 쿼리 디자인에 따라 다릅니다.

위 내용은 하위 쿼리에서 MySQL의 '피연산자는 1개의 열을 포함해야 합니다' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.