2017-11-30 2 views
0

Ich versuche, eine SQL-Anweisung zu schreiben, ersetzen statt zu aktualisieren. schauenSQL "Ersetzen in" fallen einige meiner Zeilen

Die Spalten von meinem Tisch, wie die

(id 
block 
region 
login 
password 
email 
business 
firstname 
name 
version 
updatable 
bodyshop_id 
mac 
register_date 
lastvisite_date 
enum_test 
address1) 

und wenn ich eine Anweisung wie folgt auszuführen:

REPLACE INTO `users` (`login`, `firstname`, `region`, `address1`, `enum_test`, `block`, `id`) VALUES ('Samira GO', 'Samira', 'all', 'lmklm', '1', '0', '2') 

Samira haben die ID-Nummer zwei. (Ziel der ersetzen;))

Die Person mit der ID Nummer eins ist durch die Anfrage fallen.

(Die primäre ID Schlüssel der Tabelle ID + Login + E-Mail ist) (Wenn ich bitten, diese Anforderung SQL es mir gesagt, dass drei Linien beeinflussen sind)

Wenn Sie fragen wollen, ID, Login, oder E-Mail sind einige primären Werte, so verstehe ich nicht, wie es in der Lage sein würde, einen Wert mit einer anderen ID zu ändern oder anmelden

Antwort

0

Von the MySQL REPLACE doc:

Die Aussage r REPLACE Gibt eine Anzahl an, um die Anzahl der betroffenen Zeilen anzuzeigen. Dies ist die Summe der gelöschten und eingefügten Zeilen. Wenn der Zählwert für eine einreihige REPLACE 1 ist, wurde eine Zeile eingefügt und keine Zeilen gelöscht. Wenn die Anzahl größer als 1 ist, wurden eine oder mehrere alte Zeilen gelöscht, bevor die neue Zeile eingefügt wurde. Es ist möglich, dass eine einzelne Zeile mehr als eine alte Zeile ersetzt, wenn die Tabelle mehrere eindeutige Indizes enthält und die neue Zeile Werte für verschiedene alte Zeilen in unterschiedlichen eindeutigen Indizes dupliziert.

So klingt es wie eine Zeile eingefügt wurde und zwei Zeilen gelöscht wurden.

Überprüfen Sie Ihre Tabellendefinition und sehen Sie, ob es andere eindeutige Indizes als den PRIMARY KEY gibt. Beachten Sie auch, dass Ihre Abfrage email nicht angibt, während Sie sagen, dass der Primärschlüssel id, login, email ist. Wenn zwei Zeilen existierten, die mit id und login übereinstimmten, aber unterschiedliche email hatten, wurden sie möglicherweise beide gelöscht.

Sie können auch denken, dass das, was Sie tun wollten, an INSERT ... ON DUPLICATE KEY UPDATE anstelle von REPLACE ist. REPLACE funktioniert eher wie eine kombinierte DELETE dann INSERT.

Verwandte Themen