Spaltenwerte in MySQL ohne Umbenennen austauschen
Der Austausch von Werten zwischen Spalten in einer MySQL-Tabelle kann ein nützlicher Vorgang sein, wenn die vorhandene Spaltenbestellnummer vorhanden ist mehr Ihren Anforderungen entspricht. Allerdings ist das Ändern der Tabellenstruktur zum Umbenennen von Spalten aufgrund von Berechtigungseinschränkungen möglicherweise nicht möglich.
Stattdessen können Sie die folgenden Techniken anwenden:
Methode 1: Verwenden einer temporären Variablen
UPDATE swap_test SET x=y, y=@temp WHERE (@temp:=x) IS NOT NULL;
Diese Methode verwendet eine temporäre Variable, um den Wert einer Spalte zu speichern und gleichzeitig den Wert einer anderen Spalte zu aktualisieren. NULL-Werte werden jedoch nicht effektiv verarbeitet.
Methode 2: Dipins elegante Lösung
UPDATE swap_test SET x=(@temp:=x), x = y, y = @temp;
Dipins Ansatz tauscht Werte elegant aus und funktioniert mit und ohne gleichermaßen gut NULL-Werte.
Methode 3: Verwenden von a Cross-Join
UPDATE swap_test s1, swap_test s2 SET s1.x=s1.y, s1.y=s2.x WHERE s1.id=s2.id;
Diese Methode verwendet einen Cross-Join zwischen identischen Tabellen, um den Austausch durchzuführen. Es erfordert, dass ein Primärschlüssel in der Tabelle vorhanden ist.
Beispieltabellenschema
CREATE TABLE `swap_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `x` varchar(255) DEFAULT NULL, `y` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB; INSERT INTO `swap_test` VALUES ('1', 'a', '10'); INSERT INTO `swap_test` VALUES ('2', NULL, '20'); INSERT INTO `swap_test` VALUES ('3', 'c', NULL);
Durch Auswahl der am besten geeigneten Methode basierend auf Ihrer Tabellenstruktur und Ihren Einschränkungen, Sie können Spaltenwerte erfolgreich austauschen, ohne dass eine Spaltenumbenennung oder eine Berechtigungseskalation erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie kann ich Spaltenwerte in MySQL austauschen, ohne Spalten umzubenennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!