SQL 하위 쿼리 오류: "단 하나의 표현식만 허용됩니다."
"EXISTS로 하위 쿼리가 도입되지 않은 경우 선택 목록에 하나의 표현식만 지정할 수 있습니다."라는 오류는 IN
절 내에서 사용된 하위 쿼리가 여러 열을 반환할 때 발생합니다. IN
연산자는 비교를 위해 단일 열 결과 집합을 기대합니다.
문제가 있는 쿼리:
다음 쿼리는 A_ID
절 내에서 ud
및 개수(IN
)를 반환하는 하위 쿼리를 사용하려고 시도합니다.
<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>
근본 원인:
내부 SELECT
문은 A_ID
및 ud
라는 두 개의 열을 반환합니다. IN
연산자는 이를 처리할 수 없습니다. 외부 쿼리의 A_ID
열과 비교하려면 단일 열이 필요합니다.
수정된 쿼리:
해결책은 A_ID
열만 반환하도록 하위 쿼리를 수정하는 것입니다. 개수별 정렬은 ORDER BY COUNT(DISTINCT dNum) DESC
:
<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>
이 수정된 쿼리는 개별 A_ID
값의 개수를 기준으로 dNum
값의 상위 10%를 올바르게 선택한 다음 해당 A_ID
값을 사용하여 외부 쿼리를 필터링합니다.
위 내용은 내 SQL 하위 쿼리에서 '단 하나의 표현식만 허용됨' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!