> 데이터 베이스 > MySQL 튜토리얼 > 내 SQL 하위 쿼리가 '하위 쿼리가 EXISTS로 도입되지 않은 경우 선택 목록에 하나의 표현식만 지정할 수 있습니까?'를 반환하는 이유는 무엇입니까?

내 SQL 하위 쿼리가 '하위 쿼리가 EXISTS로 도입되지 않은 경우 선택 목록에 하나의 표현식만 지정할 수 있습니까?'를 반환하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-11 13:26:42
원래의
628명이 탐색했습니다.

Why Does My SQL Subquery Return

SQL 하위 쿼리 오류: SELECT 목록의 단일 표현식

이 SQL 쿼리는 오류를 생성합니다:

<code class="language-sql">select count(distinct dNum)
 from myDB.dbo.AQ
 where A_ID in 
  (SELECT DISTINCT TOP (0.1) PERCENT A_ID, 
            COUNT(DISTINCT dNum) AS ud 
 FROM         myDB.dbo.AQ
 WHERE     M > 1 and B = 0 
 GROUP BY A_ID ORDER BY ud DESC)</code>
로그인 후 복사

"EXISTS로 하위 쿼리가 도입되지 않은 경우 선택 목록에 하나의 표현식만 지정할 수 있습니다."라는 오류 메시지는 하위 쿼리의 SELECT 절에 문제가 있음을 나타냅니다. 하위 쿼리는 A_IDCOUNT(DISTINCT dNum)라는 두 개의 열을 반환하려고 시도합니다. IN(또는 =, != 등과 같은 다른 비교 연산자)을 사용할 때 하위 쿼리의 SELECT 목록에는 단일 열만 포함되어야 합니다.

해결책:

수정된 쿼리는 하위 쿼리에서 A_ID만 반환해야 합니다.

<code class="language-sql">select count(distinct dNum)
from myDB.dbo.AQ
where A_ID in
  (SELECT DISTINCT TOP (0.1) PERCENT A_ID
  FROM myDB.dbo.AQ
  WHERE M > 1 and B = 0
  GROUP BY A_ID)
ORDER BY COUNT(DISTINCT dNum) DESC;</code>
로그인 후 복사

변경 사항 확인:

  • 하위 쿼리의 SELECT 절에는 이제 A_ID만 포함됩니다.
  • 이전에는 하위 쿼리 내에 있던 ORDER BY 절이 외부 쿼리로 이동되었습니다. 이는 원래 ORDER BYIN 절에 사용되기 전에 하위 쿼리 결과를 정렬하려고 시도했기 때문입니다. 정렬은 최종 결과 세트에 적용되어야 합니다.

이 수정된 쿼리는 하위 쿼리 결과에서 dNum가 발견된 고유 A_ID 값의 개수를 올바르게 선택합니다. 하위 쿼리는 고유 A_ID 개수를 기준으로 dNum 값의 상위 10%를 효율적으로 식별하고, 외부 쿼리는 선택한 dNum과 연결된 고유 A_ID 값을 계산합니다. 마지막 ORDER BY 절은 고유한 dNum 값의 개수를 기준으로 결과를 정렬합니다.

위 내용은 내 SQL 하위 쿼리가 '하위 쿼리가 EXISTS로 도입되지 않은 경우 선택 목록에 하나의 표현식만 지정할 수 있습니까?'를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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