In diesem Artikel wird hauptsächlich die Methode zum gleichzeitigen Abfragen und Aktualisieren derselben Tabelle in der MySQL-Datenbank vorgestellt. Freunde, die sie benötigen, können darauf verweisen.
In gewöhnlichen Projekten stoßen wir häufig auf folgende Probleme: Ich brauche die Daten wird in Zhang Biao gleichzeitig aktualisiert und abgefragt. Beispiel: Es gibt Tabellendaten wie unten gezeigt. Jetzt muss der Aktualisierungsvorgang wie folgt lauten: Aktualisieren Sie den Namenswert von status=1 auf den Namenswert von id=2
Normalerweise fällt uns die folgende Anweisung ein, um diese Anforderung zu erfüllen:
UPDATE tb_testSET NAME = ( SELECT NAME FROM tb_test WHERE id= 2)WHERE `status` = 1
, aber es wird ein Fehler gemeldet: You can't specify target table 'tb_test' for update in FROM clause
Sie können nicht dieselbe Tabelle in derselben Anweisung aktualisieren . Sie können nicht an derselben Tabelle arbeiten. Wenn Sie anders darüber nachdenken, sollte es möglich sein, wenn es sich nicht um dieselbe Tabelle handelt. Daher kann das Auswahlergebnis als temporäre Zwischentabelle betrachtet werden und die gewünschten aktualisierungsbezogenen Daten können aus der Zwischentabelle abgerufen werden. Daher kann die obige Aktualisierungsanweisung wie folgt geändert werden:
UPDATE tb_testSET NAME = (select name from ( SELECT NAME FROM tb_test WHERE id = 2) as t)WHERE `status` = 1
Auf diese Weise kann der Vorgang in der Frage abgeschlossen werden. Der allgemeine Prozess ist: Fragen Sie die Daten mit der ID = 2 als Zwischentabelle ab. Führen Sie den Aktualisierungsvorgang aus, damit Sie nicht dieselbe Tabelle in derselben Anweisung aktualisieren und auswählen ganz ähnlich wie Zwei Tabellen werden bedient, tb_test und Zwischentabelle t. Das Endergebnis ist wie folgt:
Das obige ist der detaillierte Inhalt vonBeispielanalyse von MySQL, das eine gleichzeitige Abfrage und Aktualisierung derselben Tabelle implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!