>데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 '하위 쿼리가 두 개 이상의 값을 반환했습니다' 오류를 해결하는 방법은 무엇입니까?

SQL Server에서 '하위 쿼리가 두 개 이상의 값을 반환했습니다' 오류를 해결하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-17 15:21:09427검색

How to Resolve the

SQL Server에서 "하위 쿼리가 둘 이상의 값을 반환했습니다." 오류 문제 해결

비교 연산자(예: '=') 내에 사용된 SQL Server 하위 쿼리는 단일 값을 생성해야 합니다. 여러 값이 오류를 유발합니다: "하위 쿼리가 2개 이상의 값을 반환했습니다." 솔루션을 살펴보겠습니다.

디버깅 단계:

  1. 하위 쿼리 결과 유효성 검사: 하위 쿼리는 하나의 행과 하나의 열만 반환해야 합니다. 여러 결과를 생성할 수 있는 모호하거나 중복된 데이터가 있는지 쿼리를 주의 깊게 검사하세요.

  2. 조인 조건 검토: 기본 쿼리와 하위 쿼리 간의 조인 조건이 일대일 관계를 생성하는지 확인하세요. 중복되거나 불필요한 가입 기준을 제거하세요.

  3. 집계/그룹화 함수: 하위 쿼리가 집계(예: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.