ホームページ >データベース >mysql チュートリアル >SQL Server で「サブクエリが 1 つ以上の値を返しました」エラーを修正する方法は?

SQL Server で「サブクエリが 1 つ以上の値を返しました」エラーを修正する方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-17 15:02:10560ブラウズ

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 で「サブクエリが 1 つ以上の値を返しました」エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。