2016-12-05 3 views
2

Zunächst bin ich mir nicht sicher, ob dies innerhalb der mysql Einschränkung möglich ist. Jedenfalls werde ich es posten.Aktualisieren Sie einen Tabellenfeldwert mit angrenzenden Zeile

Sagen wir, ich habe eine Tabelle mit id und date. Aber aus irgendeinem Grund fehlten einige der Daten in der Tabelle. Also, was ich im Grunde brauche, ist, aktualisieren Sie die fehlenden Daten mit angrenzenden Zeilen Datum Wert.

+-----------+---------------------+ 
|  id |  date   | 
+-----------+---------------------+ 
| 1000 | 2016-11-22 11:57:59 | 
| 1001 | NULL    | 
| 1002 | 2016-11-22 12:17:41 | 
| 1003 | 2016-11-22 13:09:24 | 
| 1004 | 2016-11-22 22:40:31 | 
| 1005 | 2016-11-22 13:59:40 | 
| 1006 | NULL    | 
| 1007 | NULL    | 
| 1008 | 2016-11-22 15:10:29 | 
| 1009 | 2016-11-22 22:40:31 | 
+-----------+---------------------+ 

Nach oben Beispiel ich einige Regeln haben die fehlenden Datumswerte für id 1001, 1006 & 1007 als Gebrüll zu aktualisieren.

  1. Wenn es ein fehlendes Datum gibt, sollte es immer mit dem obigen Datensatz aktualisiert werden. Bsp .: 1001 wird mit Datumswert aktualisiert, der 2016-11-22 11:57:59
  2. ist
  3. Datensätze Update muss mit der id acs Reihenfolge zu tun, damit wir keinen Ärger für den fehlenden Wert in der oben genannten Zeile haben. Denn obwohl es anfangs fehlt, aber mit aktualisieren wird bevor es zu dieser Zeile kommt zB: 1007: 1006 fehlt anfangs, aber es wird mit 1005 aktualisiert dann wenn es zu 1007 kommt, haben 1006 schon einen Wert. schließlich beid 1006 & 1007 haben den 1005 Datumswert, die 2016-11-22 13:59:40 ist

Hoffe, dass ich die Frage klar zu erklären, aber ich bin immer noch nicht sicher, ob dies möglich ist, mit reiner mysql Abfrage.

Antwort

1

Eigentlich ist dies durchaus möglich mit mysql mit dem Update und Join. Da Sie jedoch aufeinanderfolgende Nullen haben, müssen Sie die Abfrage mehrmals ausführen.

UPDATE empties e1, empties e2 set e1.`date` = e2.`date` 
WHERE e1.`date` IS NULL and e1.id = e2.id+1; 

anzumerken, dass der Wert in dieser Abfrage-ID zugewiesen = 1007 ist der Wert von der Zeile, in id = 1006, die NULL sein geschieht. Sie brauchen also eine zweite Iteration, um diese Nullen zu beheben.

ps: Ändern Sie Leergut zu was auch immer Ihr Tabellenname ist.

Verwandte Themen