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
Patricia Arquetteoriginal
2024-12-08 08:10:10276parcourir

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;

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;

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;

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:
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