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