Maison >base de données >tutoriel mysql >Comment corriger l'erreur « La sous-requête a renvoyé plus d'une valeur » dans SQL Server ?

Comment corriger l'erreur « La sous-requête a renvoyé plus d'une valeur » dans SQL Server ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-17 15:02:10633parcourir

How to Fix

Résoudre le problème des sous-requêtes renvoyant plusieurs valeurs dans SQL Server

Lors de l'exécution de la requête suivante :

<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>

rencontrera l'erreur suivante :

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

Cette erreur se produit car la sous-requête utilisée dans l'expression cost renvoie plusieurs valeurs, ce qui n'est pas autorisé lors d'une comparaison à l'aide de l'opérateur égal (=). Pour résoudre ce problème, remplacez la sous-requête par une opération de jointure qui sélectionne explicitement les valeurs individuelles de la colonne 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>

Cette requête renverra désormais une valeur unique pour la colonne cost, résolvant ainsi l'erreur de sous-requête.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn