> 데이터 베이스 > MySQL 튜토리얼 > WHERE IN 절의 SQL 하위 쿼리가 '선택 목록에 하나의 표현식만 지정할 수 있습니다'를 반환하는 이유는 무엇입니까?

WHERE IN 절의 SQL 하위 쿼리가 '선택 목록에 하나의 표현식만 지정할 수 있습니다'를 반환하는 이유는 무엇입니까?

DDD
풀어 주다: 2025-01-11 13:22:41
원래의
633명이 탐색했습니다.

Why Does My SQL Subquery in a WHERE IN Clause Return

WHERE IN 절에서 SQL 하위 쿼리 선택: "하위 쿼리가 EXISTS로 시작하지 않으면 선택 목록에 하나의 표현식만 지정할 수 있습니다." 오류 이해

WHERE IN 절에 하위 쿼리를 추가하려는 경우 항상 하위 쿼리가 비교를 위해 단일 열을 반환하는지 확인하세요. "하위 쿼리가 EXISTS로 시작하지 않는 경우 선택 목록에 하나의 표현식만 지정할 수 있습니다."라는 오류는 하위 쿼리가 여러 열을 반환한다는 의미입니다.

이 문제를 해결하기 위해 주어진 쿼리를 살펴보겠습니다.

<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>
로그인 후 복사

괄호 안의 하위 쿼리는 A_ID와 ud(각 A_ID에 대한 고유한 dNum 값의 개수)라는 두 개의 열을 반환합니다. 그러나 WHERE IN 절에서는 단일 열이 A_ID와 비교될 것으로 예상합니다. 따라서 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>
로그인 후 복사

이제 하위 쿼리는 WHERE IN 절에서 비교에 사용할 수 있는 단일 열 A_ID를 반환합니다. 또한 더 이상 A_ID 값의 상위 0.1%만 선택할 필요가 없으므로 COUNT(DISTINCT dNum) AS ud 절을 제거할 수 있습니다.

이 수정된 쿼리는 지정된 오류를 해결하고 원하는 결과를 검색할 수 있도록 해야 합니다. WHERE IN 절에서 하위 쿼리를 사용할 때 하위 쿼리가 비교에 필요한 열만 반환하는지 확인하세요.

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

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