Maison >base de données >tutoriel mysql >Comment puis-je échanger les valeurs des colonnes MySQL sans autorisations ALTER TABLE ?
É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!