집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 '하위 쿼리가 두 개 이상의 값을 반환했습니다' 오류를 수정하는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!