Comment réaffecter deux variables dans une mise à jour conditionnelle
Question
Considérez une simple mise à jour comme
SET @var1 = 20;
SET @var2 = 26;
UPDATE table1 SET
col1=IF(@var1>50, @var1 := @var1-col4, @var1 := @var1+col5),
col2=IF(@var2>50, @var2 := @var2-col6, @var2);
Comment nous pouvons modifier deux variables en une seule condition. Par exemple, considérez que lorsque @var1<50
, nous voulons changer non seulement @var1 := @var1+col5
, mais aussi réaffecter @var2 := @var2 + 100
. En fait, quelle que soit la condition 2, nous voulons augmenter @var2
, si la première condition échoue (la deuxième partie).
Est-il possible de réaffecter deux variables de l'utilisateur dans un IF STATEMENT
ou nous devons en ajouter un autre IF STATEMENT
?
Cela sera équivalent à
SET @var1 = 20;
SET @var2 = 26;
UPDATE table1 SET
col1=IF(@var1>50, @var1 := @var1-col4, @var1 := @var1+col5),
virtual_col=IF(@var1>50, NULL, @var2 := @var2+100),
col2=IF(@var2>50, @var2 := @var2-col6, @var2);
Ici, nous avons créé une colonne inutile, non pour collecter les données, mais pour répéter le IF STATEMENT
pour le @var2
. De toute évidence, ce n'est pas bon du point de vue de la performance, car nous dirigeons un inutile UPDATE
action.
Pas de solution correcte