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

Comment puis-je échanger les valeurs des colonnes MySQL sans autorisations ALTER TABLE ?

Patricia Arquette
Libérer: 2024-12-08 08:10:10
original
326 Les gens l'ont consulté

How Can I Swap MySQL Column Values Without ALTER TABLE Permissions?

Échanger les valeurs des colonnes MySQL avec des autorisations limitées

La mise à jour des valeurs des colonnes sans autorisation de modifier la structure de la base de données peut poser un défi. L'approche intuitive consistant à utiliser une instruction UPDATE pour échanger des valeurs, telle que la table UPDATE SET X=Y, Y=X, ne suffira pas. Envisagez plutôt les méthodes suivantes qui contournent les changements structurels :

Méthode 1

Utilisez une variable temporaire pour conserver une valeur tout en attribuant l'autre valeur. Cela garantit que les deux valeurs ne sont pas remplacées par les mêmes données.

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

Méthode 2

Échangez les valeurs à l'aide d'une série d'affectations. Cette méthode gère avec élégance les valeurs NULL et non NULL.

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

Méthode 3

Utilisez l'auto-jointure pour mettre à jour les valeurs sur deux références de table. Cette méthode nécessite une clé primaire ou un index unique.

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

Chaque méthode offre des avantages et des limites uniques. La méthode 1 peut gérer les valeurs non NULL, tandis que la méthode 2 peut gérer les valeurs NULL et non NULL. La méthode 3 nécessite une clé primaire, mais permet de permuter entre différentes lignes si vous le souhaitez. En fin de compte, la meilleure approche dépend des exigences spécifiques de la tâche à accomplir.

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!

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