집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 '하위 쿼리가 두 개 이상의 값을 반환했습니다' 오류를 해결하는 방법은 무엇입니까?
SQL Server에서 "하위 쿼리가 둘 이상의 값을 반환했습니다." 오류 문제 해결
비교 연산자(예: '=') 내에 사용된 SQL Server 하위 쿼리는 단일 값을 생성해야 합니다. 여러 값이 오류를 유발합니다: "하위 쿼리가 2개 이상의 값을 반환했습니다." 솔루션을 살펴보겠습니다.
디버깅 단계:
하위 쿼리 결과 유효성 검사: 하위 쿼리는 하나의 행과 하나의 열만 반환해야 합니다. 여러 결과를 생성할 수 있는 모호하거나 중복된 데이터가 있는지 쿼리를 주의 깊게 검사하세요.
조인 조건 검토: 기본 쿼리와 하위 쿼리 간의 조인 조건이 일대일 관계를 생성하는지 확인하세요. 중복되거나 불필요한 가입 기준을 제거하세요.
집계/그룹화 함수: 하위 쿼리가 집계(예: SUM
, AVG
, COUNT
) 또는 그룹화 함수를 사용하는 경우 올바른 적용과 단일 출력 값을 생성하는지 확인하세요.
예 및 해결 방법:
제공된 예에서는 여러 비용 값을 반환하여 오류를 일으키는 하위 쿼리를 보여줍니다. 솔루션은 TOP 1
을 사용하여 하위 쿼리의 출력을 단일 행으로 제한합니다.
<code class="language-sql">SELECT orderdetails.sku, orderdetails.mf_item_number, orderdetails.qty, orderdetails.price, supplier.supplierid, supplier.suppliername, supplier.dropshipfees, cost = (SELECT TOP 1 supplier_item.price FROM supplier_item WHERE supplier_item.sku = orderdetails.sku AND supplier_item.supplierid = supplier.supplierid) FROM orderdetails INNER JOIN supplier ON supplier.supplierid = orderdetails.mfr_id INNER JOIN group_master ON group_master.sku = orderdetails.sku WHERE invoiceid = '339740'</code>
TOP 1
을 사용하면 하나의 행(따라서 하나의 가격)만 반환되어 오류가 해결됩니다. TOP 1
절이 없는 ORDER BY
는 임의의 행을 반환합니다. 순서가 중요한 경우 일관된 결과를 얻으려면 ORDER BY
을 추가해 보세요.
위 내용은 SQL Server에서 '하위 쿼리가 두 개 이상의 값을 반환했습니다' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!