2017-04-03 3 views
0

Ist es möglich, mit einer Unterabfrage aus der gleichen Tabelle zu aktualisieren?Update mit SubQuery aus der gleichen Tabelle

ich diesen Fehler:

1093 - Sie können keine Zieltabelle 'Aufgaben' für die Aktualisierung in FROM-Klausel angeben

update tasks SET completed_form = 'y' AND all_forms_in = 'y' where EID in (select EID from tasks WHERE completed_form = 'y' AND all_forms_in = 'n' group by EID having count(*) > 1); 

UPDATE

Ich fand, dass, wenn ich wickelte die Abfrage in einer anderen Auswahl funktionierte es. Wie hier verwiesen: MySQL Error 1093 - Can't specify target table for update in FROM clause

update tasks SET all_forms_in = 'y' where EID in (SELECT * FROM (select EID from tasks WHERE completed_form = 'y' AND all_forms_in = 'n' group by EID having count(*) > 1)AS b); 

Antwort

0

MySQL unterstützt in Update-Anweisungen JOIN, so können Sie dies tun, ohne Unterabfragen. Sie müssten zwei getrennte Zeilen mit Ihren abgeschlossenen Kriterien hinzufügen, um die Anzahl (*)> 1 zu simulieren.

UPDATE tasks AS t1 
INNER JOIN tasks AS t2 
    ON (t1.EID = t2.EID AND t2.completed_form = 'y' AND t2.all_forms_in = 'n') 
INNER JOIN tasks AS t3 
    ON (t1.EID = t3.EID AND t3.completed_form = 'y' AND t3.all_forms_in = 'n' 
    AND t2.primary_key <> t3.primary_key) 
SET t1.completed_form = 'y', 
    t1.all_forms_in = 'y'; 
Verwandte Themen