WÄHLEN Sie im VERSCHMELZEN in MySQL
Ich versuche, die folgende in der MySQL:
UPDATE
x
SET
y = COALESCE(SELECT z FROM table WHERE a = b AND c = d AND e = f LIMIT 1,
SELECT z FROM table WHERE a = b AND c = d LIMIT 1,
SELECT z FROM table WHERE a = b LIMIT 1);
Klingt es sehr gültig für mich. Ich bin versucht, zu aktualisieren eine Spalte mit der am besten geeignete Wert. Wenn ich einen Datensatz der 3-Kriterien -> das ist der, den ich brauche. Anderes, das man auch 2 Kriterien, was ein Datensatz nur ein Kriterium.
Kann ich dies in 3-update-Abfragen, aber ich verstehe nicht, warum dies nicht funktioniert. Nach der Handbuch:
COALESCE returns the first non-NULL value in the list, or NULL if there are no non-NULL values.
Dass genau, was ich brauche. aber es gibt die folgende Fehlermeldung:
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT'
Bin ich hier etwas fehlt?
- Kannst du die Fehlermeldung?
- Sind Sie in der Lage, eine vollständige Abfrage, D. H. ohne Ihre Verallgemeinerung in es. Es würde helfen, um genauere Beratung.
- Es ist nur ein 1064 syntax error. Meine Abfrage ist im Grunde so. Es gibt einen syntax Fehler genau auf die WÄHLEN Sie in der SICHT.
- Haben Sie versucht, indem Sie jedem dieser subselects in Ihr eigenes paar von Klammern (wie in der Regel erforderlich für subselects)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist vermutlich, dass Sie immer mehr als 1 z-Wert, der zurückgegeben wird, durch den subselects. Sie bekommen nur eine.
Könnten Sie versuchen:
Jedoch Ihre spezifische syntax-Fehler ist, müssen Sie Klammern um den wählt. Das ist also die syntaktisch korrekte version:
Ist es schwer zu beraten, ohne weitere details, aber so etwas kann funktionieren,
Sorgt dafür, dass jeder Unterabfrage gibt nur bis zu 1 Zeile.