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

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

Patricia Arquette
Patricia Arquette원래의
2025-01-17 15:02:10561검색

How to Fix

SQL Server에서 여러 값을 반환하는 하위 쿼리 문제 해결

다음 쿼리를 실행하는 경우:

<code class="language-sql">SELECT 
   orderdetails.sku,
   orderdetails.mf_item_number,
   orderdetails.qty,
   orderdetails.price,
   supplier.supplierid,
   supplier.suppliername,
   supplier.dropshipfees,
   cost = (SELECT supplier_item.price
           FROM   supplier_item,
                  orderdetails,
                  supplier
           WHERE  supplier_item.sku = orderdetails.sku
                  AND supplier_item.supplierid = supplier.supplierid)
FROM   orderdetails,
       supplier,
       group_master
WHERE  invoiceid = '339740'
       AND orderdetails.mfr_id = supplier.supplierid
       AND group_master.sku = orderdetails.sku  </code>

다음 오류가 발생합니다.

<code>Msg 512, Level 16, State 1, Line 2
子查询返回多个值。当子查询位于 =、!=、<、<=、>、>= 之后,或者用作表达式时,这是不允许的。</code>

이 오류는 cost 표현식에 사용된 하위 쿼리가 여러 값을 반환하기 때문에 발생하며, 이는 등호 연산자(=)를 사용하여 비교할 때 허용되지 않습니다. 이 문제를 해결하려면 하위 쿼리를 cost 열의 개별 값을 명시적으로 선택하는 조인 작업으로 바꾸세요.

<code class="language-sql">SELECT
    od.Sku,
    od.mf_item_number,
    od.Qty,
    od.Price,
    s.SupplierId,
    s.SupplierName,
    s.DropShipFees,
    si.Price as cost
FROM
    OrderDetails od
    INNER JOIN Supplier s on s.SupplierId = od.Mfr_ID
    INNER JOIN Group_Master gm on gm.Sku = od.Sku
    INNER JOIN Supplier_Item si on si.SKU = od.Sku and si.SupplierId = s.SupplierID
WHERE
    od.invoiceid = '339740'</code>

이제 이 쿼리는 cost 열에 대해 단일 값을 반환하므로 하위 쿼리 오류가 해결됩니다.

위 내용은 SQL Server에서 '하위 쿼리가 두 개 이상의 값을 반환했습니다' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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