SQLite - augmenter la valeur d'un certain nombre

93

est-il possible d'augmenter une certaine valeur dans une table d'un certain nombre sans lire la dernière valeur et ensuite la mettre à jour?

c'est à dire que j'ai des colonnes «produit» et «qualité»: produit: qualité iLamp: 50

Je souhaite augmenter (ou diminuer) la qualité de x. Pour y parvenir, je lis d'abord la dernière valeur (50), en l'augmentant ou en la diminuant et en l'écrivant.

Existe-t-il un moyen direct d'accomplir cette tâche?

Ilya Suzdalnitski
la source

Réponses:

201

Exemple 1 (pour toutes les lignes):

UPDATE Products SET Price = Price + 50

Exemple 2 (pour une ligne spécifique):

UPDATE Products SET Price = Price + 50 WHERE ProductID = 1

Exemple 3 (générique):

UPDATE {Table} SET {Column} = {Column} + {Value} WHERE {Condition}

Où:

  • {Table} - nom de la table
  • {Column} - nom de colonne
  • {Value} - un nombre par lequel la valeur de la colonne doit être augmentée ou diminuée
  • {Condition} - une condition le cas échéant
Konstantin Tarkus
la source
3
FROM est un mot clé SQLite? Les documents ne semblent pas l'indiquer. sqlite.org/lang_update.html
Jason S
comment cela peut-il être fait en python avec sqlite3? J'ai besoin de mettre à jour un col + = 1 où dans la première colonne =?
st.ph.n
@ user3358205: Comme le dit l'homme ...UPDATE table SET col = col + 1 WHERE first_column = ?
Mumbleskates
Pour incrémenter une liste de critères , faites quelque chose commeUPDATE Products SET Price = Price + 50 WHERE [ProductID] IN [1,3,56,78,44,23,8989,23]
zelusp
@Konstantin est-il possible d'incrémenter toutes les valeurs de ligne d'une colonne de manière incrémentielle? Dites si les lignes existantes sont «R, S, T», alors elles devraient être «R1, S2, T3». Toute suggestion ?
CoDe du