Sie haben beide markiert, vielleicht aus Versehen? In beiden Fällen können Sie das Ergebnis einer Unterabfrage, die einem Skalar mehr als eine Zeile (oder mehr als eine Spalte) zurückgibt, nicht zuweisen. Vielleicht willst du eine UPDATE der Unterabfrage beitreten? Ich benutze MySQL
Das scheint zu funktionieren: Update companies c inner join (select as company_id, sum(case when _tip = 1 then (()/(@maxrank-1)) * () else 0 end) as cc_score from companies a left join table2 b on = pany_id left join table3 c on le3_id = group by) x ON pany_id = set c. c_c_score = _score; 1 JOINing ist oft besser als die Verwendung einer Unterabfrage. Delphi SQL-Update mit Unterabfrage - Delphi-PRAXiS. Wie @Akina in seinem Kommentar betont, dürfen Sie einem Attribut nicht mehr als einen Skalarwert zuweisen. Ihre Unterabfrage gibt Folgendes zurück: 1, 2, 3 Welcher der Werte sollte der Punktzahl zugewiesen werden? Ich gehe davon aus, dass Sie beabsichtigen, die Tabelle der äußeren Unternehmen mit der Unterauswahl zu korrelieren. Entspricht dies dem, was Sie erreichen möchten?
Sql Update Unterabfrage
Eine Unterabfrage heißt korreliert, wenn es Spalten der äußeren SELECT-Anweisung gibt, die mit den Spalten der inneren SELECT-Anweisung übereinstimmen und in einer WHERE-Bedingung miteinander verknüpft sind. Die innere SELECT-Anweisung kann ohne die äußere Anweisung nicht ausgeführt werden. Korrelierte Unterabfragen können in WHERE-Klauseln von SELECT-Anweisungen, aber auch von UPDATE-Anweisungen oder DELETE-Anweisungen verwendet werden. Während die Korrelation bei binären Operatoren wie z. B. IN-Operator oder den Vergleichsoperatoren? syntaktisch erzwungen wird, neigen Entwickler beim unären EXISTS schon mal dazu sie zu vergessen. Beispiel
Diese SELECT-Anweisungen selektiert Nachnamen und Gehalt aller Angestellten, die mehr als irgendein Angestellter derjenigen Abteilung, die vom Leiter 4 geführt wird, verdienen. SELECT chname,
FROM Angestellte a
WHERE > ANY (SELECT
FROM Abteilungen b
WHERE a. Mysql - SQL UPDATE mit Unterabfrage, die auf die gleiche Tabelle in MySQL verweist. Abt_Nr = b. Abt_Nr ·
AND = 4); '
WHERE EXISTS (SELECT *
AND = 4
AND >);
Quellen:
Quellen/Standards in und
INCITS/ISO/IEC 9075-1-2008.
Sql Update Mit Unterabfrage Data
SQL-Unterabfrage in SQL 2008 Server - IN-Klausel
Ich versuche, die Werte einer Spalte auf die Ergebnisse einer Unterabfrage zu aktualisieren. Ich erhalte die Fehlermeldung, dass die Unterabfrage mehr als eine Zeile zurückgibt, was sie sollte. Es sollte eine Wertespalte zurückgegeben werden. Sql update unterabfrage. Update companies set c_c_score = ( select from ( select sum(case when _tip = 1 then (()/(@maxrank-1)) * () else 0 end) as summ from companies a left join table2 b on = pany_id left join table3 c on le3_id = group by) AS t); Die Unterabfrage läuft von selbst einwandfrei. select, sum(case when _tip = 1 then (()/(@maxrank-1)) * () else 0 end) from companies a left join table2 b on = pany_id left join table3 c on le3_id = group by; 3 Ihre select Gibt mehr als eine Zeile zurück. Prüfen. Wenn sie in Bezug auf Datenintegrität und Abfragelogik IMMER identisch sind, fügen Sie DISTINCT hinzu. Wenn nicht - wählen Sie einen Wert mit einer Methode aus (verwenden Sie beispielsweise die Funktion MAX ()). MySQL oder SQL Server?
2), E17118-03, August 2010,
Saake, Gunter/Sattler, Kai-Uwe/Heuer, Andreas: "Datenbanken - Konzepte und Sprachen", mitp-Verlag, Redline GmbH, Heidelberg, 2007, ISBN 3-8266-1664-2
Sieben, Jürgen: "Oracle® SQL - Das umfassende Handbuch", Galileo Press, 2012, ISBN 978-3-8362-1875-7
Vossen, Gottfried: "Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme", Oldenbourg, München, 2008, ISBN 978-3-486-27574-2
Kategorie:: SQL, K