2016-07-31 4 views
0

Ich versuche Zeilen nach einem Zeitstempel für jeden Kunden zu löschen, die Wert 1 in MySQL haben. Beispieltabelle:MySQL löschen Zeilen basierend auf Wert und nach einem Zeitstempel für jeden Kunden

id | timestamp | cust_ID | value 899900 | 2016-04-11 12:00:00 | 500219 | 0 899901 | 2016-04-12 16:00:00 | 500219 | 0 899902 | 2016-04-14 11:00:00 | 500219 | 1 899903 | 2016-04-15 12:00:00 | 500219 | 1 899904 | 2016-04-23 09:00:00 | 500219 | 0 899905 | 2016-05-02 19:00:00 | 500219 | 0 909901 | 2016-04-12 16:00:00 | 500230 | 0 909902 | 2016-04-14 11:00:00 | 500230 | 1 909903 | 2016-04-15 12:00:00 | 500230 | 1 909904 | 2016-04-23 09:00:00 | 500230 | 0 909905 | 2016-05-02 19:00:00 | 500230 | 0 939905 | 2016-05-02 19:00:00 | 500240 | 0

Der Versuch, zu erreichen:

id | timestamp | cust_ID | value 899900 | 2016-04-11 12:00:00 | 500219 | 0 899901 | 2016-04-12 16:00:00 | 500219 | 0 899902 | 2016-04-14 11:00:00 | 500219 | 1 899903 | 2016-04-15 12:00:00 | 500219 | 1 909901 | 2016-04-12 16:00:00 | 500230 | 0 909902 | 2016-04-14 11:00:00 | 500230 | 1 909903 | 2016-04-15 12:00:00 | 500230 | 1 939905 | 2016-05-02 19:00:00 | 500240 | 0

I Bisher haben die folgenden, die Fehler 1242 wirft 'Unterabfrage gibt mehr als eine Zeile':

CREATE VIEW max_id AS SELECT id, cust_ID, MAX (timestamp) VON table WHERE value = 1 GROUP BY cust_ID; LÖSCHEN VON max_id WHERE id> (SELECT id VON max_id GROUP BY cust_ID);

Jede Hilfe würde sehr geschätzt werden!

Antwort

0

Ich bin nicht 100% was genau die Logik Sie wollen. Aber Sie sollten in der Lage sein, eine join zu verwenden. Der folgende Code löscht alle Zeilen für einen Kunden, dessen Zeitstempel größer als der maximale Zeitstempel mit einer "1" für diesen Kunden ist:

+0

Vielen Dank für Ihre Antwort. Dies hält jedoch nur eine Zeile pro cust_id. Jede Hilfe wäre willkommen. –

+0

Es funktioniert jetzt, habe ich den tt.timestamp> t.timestamp geschaltet. Vielen Dank! –

Verwandte Themen