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
Libérer: 2025-01-17 15:02:10
original
648 Les gens l'ont consulté

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 :

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  
Copier après la connexion

rencontrera l'erreur suivante :

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

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 :

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'
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal