Maison > base de données > tutoriel mysql > Comment puis-je échanger les valeurs des colonnes dans MySQL sans renommer les colonnes ?

Comment puis-je échanger les valeurs des colonnes dans MySQL sans renommer les colonnes ?

Susan Sarandon
Libérer: 2024-12-05 21:48:13
original
366 Les gens l'ont consulté

How Can I Swap Column Values in MySQL Without Renaming Columns?

Échanger les valeurs de colonnes dans MySQL sans renommer

L'échange de valeurs entre les colonnes d'une table MySQL peut être une opération utile lorsque l'ordre des colonnes existantes n'est pas ne correspond plus à vos besoins. Cependant, modifier la structure de la table pour renommer les colonnes peut ne pas être réalisable en raison de restrictions d'autorisation.

Au lieu de cela, vous pouvez utiliser les techniques suivantes :

Méthode 1 : Utilisation d'une variable temporaire

UPDATE swap_test SET x=y, y=@temp WHERE (@temp:=x) IS NOT NULL;
Copier après la connexion

Cette méthode utilise une variable temporaire pour conserver la valeur d'une colonne tout en mettant à jour l'autre. Cependant, il ne gère pas efficacement les valeurs NULL.

Méthode 2 : la solution élégante de Dipin

UPDATE swap_test SET x=(@temp:=x), x = y, y = @temp;
Copier après la connexion

L'approche de Dipin échange élégamment les valeurs, fonctionnant aussi bien avec et sans Valeurs NULL.

Méthode 3 : Utiliser un Cross-Join

UPDATE swap_test s1, swap_test s2 SET s1.x=s1.y, s1.y=s2.x WHERE s1.id=s2.id;
Copier après la connexion

Cette méthode utilise une jointure croisée entre des tables identiques pour effectuer l'échange. Il nécessite qu'une clé primaire soit présente dans la table.

Exemple de schéma de table

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);
Copier après la connexion

En choisissant la méthode la plus appropriée en fonction de la structure et des contraintes de votre table, vous pouvez échanger avec succès les valeurs des colonnes sans avoir besoin de renommer les colonnes ou d'escalader les autorisations.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal