Heim > Datenbank > MySQL-Tutorial > Wie behebt man den Fehler „Unterabfrage hat mehr als 1 Wert zurückgegeben' in SQL Server?

Wie behebt man den Fehler „Unterabfrage hat mehr als 1 Wert zurückgegeben' in SQL Server?

Patricia Arquette
Freigeben: 2025-01-17 15:02:10
Original
559 Leute haben es durchsucht

How to Fix

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>
Nach dem Login kopieren

wird auf den folgenden Fehler stoßen:

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

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage