Ich versuche, eine bestimmte Zeile in einer Datenbank mit SELECT und OFFSET auswählen. Das Ergebnis ist logisch und ich bekomme die gewünschte Zeile. Aber dann muss ich das gleiche spezifische Zeile aktualisieren, damit ich etwas tun, wie folgt aus:MySQL Query - Verwenden Sie SELECT innerhalb eines UPDATE
UPDATE table
SET value=1
WHERE value IN (SELECT * FROM(
SELECT value FROM table WHERE some criteria LIMIT 1 OFFSET 2) temp_tab);
Nun, was ich von diesem Code erwarten ist nur die ausgewählte Zeile zu aktualisieren. Stattdessen aktualisiert es alle Zeilen in der Datentabelle und setzt ihren Wert auf 1
Wenn ich nur verwenden:
SELECT * FROM(
SELECT value FROM table WHERE some criteria LIMIT 1 OFFSET 2) temp_tab
ich nur 1 Zeile wie der Ausgang. (LIMIT 1 OFFSET 2 stellt sicher, dass ich die 1 Zeile bekomme und es ist die 2te verfügbar) Ich bin mir nicht ganz sicher, was ich falsch mache oder wie ich das erreichen soll.
Hinweis: Ich muss SELECT und nicht eine andere Methode verwenden eindeutige ID der Zeile oder etwas ähnliches verwenden. Jede Hilfe würde sehr geschätzt werden.
Verwenden Sie nicht "Wert". Verwende etwas Einzigartiges wie "id". '... WHERE ID IN ...' –
@juergend d In meinem Fall muss ich eine SELECT-Anweisung verwenden, um diese bestimmte Zeile anzugeben und die Art, wie ich sie auswähle, indem ich OFFSET X verwende (weil die Kriterien in der WHERE-Ursache make Sicher, ich bekomme die Zeilen, die ich will, aber dann brauche ich nur 1 von ihnen) und was ich erwarte ist, dass Wert nur auf der ausgewählten Zeile auf 1 gesetzt wird, wo ich WHERE Wert IN (Auswahl), sondern das SET auf alle Zeilen angewendet wurde in der Tabelle nicht nur die Auswahl. Entschuldigung für mein schlechtes Englisch, falls Sie Probleme haben, mich zu verstehen. – Chogart
Ich verstehe es. Aber warum sollte 'SELECT value from your_table' verwendet werden? Do 'UPDATE Tabelle SET Wert = 1 WHERE ID IN (SELECT * FROM ( SELECT ID FROM Tabelle WHERE einige Kriterien LIMIT 1 OFFSET 2) temp_tab) 'stattdessen. –