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

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top