Hacker9k3: /MySQL

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

  1. 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

    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.))!)

    1. 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?

      1. 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?

        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');

      2. 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.

  2. 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?

    1. 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?