/ / Est-il possible de mettre à jour 3 lignes SQL dans une instruction de mise à jour 1 sql - sql

Est-il possible de mettre à jour 3 lignes SQL dans une déclaration de mise à jour de 1 sql - sql

J'ai une table SQL comme celle-ci.

id          Order
======== =========
1                4
2                3
3                5
4                1
5                2

Est-il possible de mettre à jour plusieurs lignes dans une instruction sql? c'est-à-dire que je veux mettre à jour id = 3, order = 1 et id = 5, order = 4 et id = 1, order = 1

Je sais comment faire cela dans 3 déclarations de mise à jour. Mais je voudrais savoir si je peux mettre à jour 3 lignes dans 1 instruction de mise à jour sql.

Je vous remercie.

Réponses:

5 pour la réponse № 1

Vous pouvez le faire avec un seul UPDATE déclaration, mais je ne voudrais pas déranger.

Il est plus logique d'utiliser trois mises à jour distinctes dans cette situation. Essayer de le faire avec une seule instruction rend votre code moins lisible et plus sujet aux erreurs.

Mais si vous voulez vraiment la seule déclaration, c'est parti:

UPDATE your_table
SET order = CASE id
WHEN 3 THEN 1
WHEN 5 THEN 4
WHEN 1 THEN 1
END
WHERE id IN (3, 5, 1)

3 pour la réponse № 2

Pourquoi voulez-vous mettre à jour trois lignes dans une seule instruction?

Si les lignes doivent toutes être synchronisées les unes avec les autres, vous pouvez faire:

BEGIN TRANSACTION;
UPDATE... ;
UPDATE... ;
UPDATE... ;
COMMIT

De cette façon, tout le travail entre le début et la validation est soit entièrement terminé, soit rien n'est fait. Il s'agit d'une caractéristique clé des bases de données relationnelles basées sur SQL. Même SQLITE a cette capacité.


1 pour la réponse № 3

Essayez quelque chose comme ça:

update Orders
set
Order = (
case
when id = 3 then 1
when id = 5 then 4
when id = 1 then 1
end
where id in (3, 5, 1)

Cela dépend de votre base de données.


0 pour la réponse № 4

Vous pouvez utiliser CASE si votre SGBD le prend en charge.