Lösung des Problems der Unterabfrage, die mehrere Werte in SQL Server zurückgibt
Beim Ausführen der folgenden Abfrage:
<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>
wird auf den folgenden Fehler stoßen:
<code>Msg 512, Level 16, State 1, Line 2 子查询返回多个值。当子查询位于 =、!=、<、<=、>、>= 之后,或者用作表达式时,这是不允许的。</code>
Dieser Fehler tritt auf, weil die im cost
-Ausdruck verwendete Unterabfrage mehrere Werte zurückgibt, was beim Vergleich mit dem Gleichheitsoperator (=) nicht zulässig ist. Um dies zu beheben, ersetzen Sie die Unterabfrage durch eine Join-Operation, die explizit einzelne Werte der Spalte cost
auswählt:
<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>
Diese Abfrage gibt nun einen einzelnen Wert für die Spalte cost
zurück und behebt so den Unterabfragefehler.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Unterabfrage hat mehr als 1 Wert zurückgegeben' in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!