/MySQL
Hacker9k3
- datenbank
0 King Lully0 Hacker9k30 Hacker9k30 King Lully
0 Daywalker
Hallo!
Wie tausche ich die indexierte ID zweier Datensätze in einer Tabelle?
Vorher:
ID | Name
1 | Peter
2 | Max
3 | Tim
4 | Kai
Nachher:
ID | Name
3 | Peter
2 | Max
1 | Tim
4 | Kai
hier wurden die ID's von Peter und Tim vertausch. Wie stelle ich es an in nur einer MySQL-Abfrage? Und falls das nicht geht in einer Abfrage, wie mache ich es dann?
MfG
Hacker9k3
Wie tausche ich die indexierte ID zweier Datensätze in einer Tabelle?
Vorher:
ID | Name
1 | Peter
2 | Max
3 | Tim
4 | KaiNachher:
ID | Name
3 | Peter
2 | Max
1 | Tim
4 | Kai
Schalte den Primärschlüssel (ggf. weitere Fremdschlüssel) ab und nach dem UPDATE später wieder zu. (Und sorge zukünftig dafür, dass Primärschlüssel nie, aber auch nie, irgendeine Bedeutung haben (auch nicht als Kennung für bspw. Verträge (Ver.Nr.))!)
Schalte den Primärschlüssel (ggf. weitere Fremdschlüssel) ab und nach dem UPDATE später wieder zu. (Und sorge zukünftig dafür, dass Primärschlüssel nie, aber auch nie, irgendeine Bedeutung haben (auch nicht als Kennung für bspw. Verträge (Ver.Nr.))!)
nun, das würde aber nach wie vor bedeuten, dass ich mind. 3 mysql-anfragen schreiben muss.
1. ALTER TABLE x ADD PRIMARY KEY ('ID');
2. UPDATE ID=IF(ID = 1, 3, 1) WHERE ID=1 OR ID=3;
3. ALTER TABLE x DROP PRIMARY KEY;
in einer Abfrage geht das nicht?
Schalte den Primärschlüssel (ggf. weitere Fremdschlüssel) ab und nach dem UPDATE später wieder zu. (Und sorge zukünftig dafür, dass Primärschlüssel nie, aber auch nie, irgendeine Bedeutung haben (auch nicht als Kennung für bspw. Verträge (Ver.Nr.))!)
nun, das würde aber nach wie vor bedeuten, dass ich mind. 3 mysql-anfragen schreiben muss.
- ALTER TABLE x ADD PRIMARY KEY ('ID');
- UPDATE ID=IF(ID = 1, 3, 1) WHERE ID=1 OR ID=3;
- ALTER TABLE x DROP PRIMARY KEY;
in einer Abfrage geht das nicht?
Ups, natürlich die Schritte 1 und 3 vertauschen...
1. ALTER TABLE x DROP PRIMARY KEY;
2. UPDATE ID=IF(ID = 1, 3, 1) WHERE ID=1 OR ID=3;
3. ALTER TABLE x ADD PRIMARY KEY ('ID');
in einer Abfrage geht das nicht?
Glaube nicht, es gibt ja auch eine ganze Menge zu tun. Eine Syntax, der ein einziges Statement genügen würde, wäre da unseres Erachtens ausdrücklich nicht hilfreich.
Wie tausche ich die indexierte ID zweier Datensätze in einer Tabelle?
Niemals.
hier wurden die ID's von Peter und Tim vertausch. Wie stelle ich es an in nur einer MySQL-Abfrage? Und falls das nicht geht in einer Abfrage, wie mache ich es dann?
Warum willst du die primäre ID tauschen?
Wie tausche ich die indexierte ID zweier Datensätze in einer Tabelle?
Niemals.
Wie esse ich mit Stäbchen? - Niemals.
Und auch wenn es nicht gefällt, ist es doch eine fast tägliche Anforderungslage hier.
hier wurden die ID's von Peter und Tim vertausch. Wie stelle ich es an in nur einer MySQL-Abfrage? Und falls das nicht geht in einer Abfrage, wie mache ich es dann?
Warum willst du die primäre ID tauschen?
Lass uns mal raten. Weil die ID eine Bedeutung hat? Weil es angefordert ist? Oder nur so aus Spass? Ausbrobieren wie es geht?