2016-03-19 6 views
0

Ich habe eine Ereignistabelle. (Ich habe nicht schaffen diese Tabelle)Update mehrerer Zeilen in MySQL mit ähnlichem Inhalt

Die Felder sind id, event_id, start_date, end_date, e_status

Das einzige, was ist nicht eindeutig die ID ist. Der Rest ist in allen Zeilen gleich.

Wie aktualisiere ich den Status?

Ich habe versucht:

UPDATE events 
    SET e_status = 
     CASE event_id 
      WHEN 12830 THEN 0 
     END 
    WHERE start_date = '2016-06-24 17:30:00' 
    AND end_date = '2016-06-24 18:00:00' 
    AND event_id IN (12830) 

Keine Updates geändert wurden.

+0

Also, wollen Sie nur den Status eines bestimmten Ereignisses zwischen zwei Terminen ändern? – xpy

Antwort

0

Wenn alle Daten in allen Zeilen bis auf die ID-Spalte identisch sind, sollten Sie keine Kriterien in der WHERE-Klausel benötigen. Sie sollten in der Lage sein, nur dies zu haben:

UPDATE events 
SET e_status = 
    CASE event_id 
     WHEN 12830 THEN 0 
    END 

Und eigentlich brauchen Sie nicht einmal die Case-Anweisung. Wenn alle Daten bis auf id identisch sind, haben dann nicht alle Zeilen eine event_id = 12830? Sie können haben nur ==>

UPDATE events 
set e_status = 0 
+0

Entschuldigung, ich bin noch neu in diesem Bereich, deshalb lerne ich immer noch die Formatierung von Antworten. Ich habe den Code falsch formatiert. –

+0

Sie können Ihre Antwort bearbeiten. –

0

vor

ID Event Status 
1 USA  0 
2 UK  0 
3 Canada 0 

Ihre einfache Abfrage

update event set status=1 

Nach der Bearbeitung wäre Bearbeitung

ID Event Status 
1 USA  1 
2 UK  1 
3 Canada 1 

und wenn Sie ins Visier nehmen will spezifische Aufzeichnung verwenden Sie einfach w hier Klausel

Aktualisierungsereignis gesetzt Status = 1 wobei id = 1

Verwandte Themen