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