web-dev-qa-db-fra.com

UPDATE syntaxe dans SQLite

J'ai besoin de savoir si je peux le faire dans une instruction UPDATE:

UPDATE users SET ('field1', 'field2', 'field3') 
VALUES ('value1', 'value2', 'value3');

Ou une syntaxe similaire. J'utilise SQLite.

Remarque:

Personne ne me comprend, je veux juste savoir s'il est possible de FIXER des champs séparés à des valeurs distinctes. C'est tout.

15
calbertts

Il existe une syntaxe (SQL standard) similaire à ce que vous proposez mais à ma connaissance, seul Postgres l'a implémentée:

UPDATE users
SET  (field1, field2, field3)
   = ('value1', 'value2', 'value3') 
WHERE some_condition ;

Testé (pour les infidèles) dans: SQL-Fiddle


Cela fonctionne également dans Postgres:

UPDATE users AS u
SET 
   (field1, field2, field3)
 = (f1, f2, f3)
FROM
  ( VALUES ('value1', 'value2', 'value3')
  ) AS  x (f1, f2, f3)
WHERE condition ;

Cela fonctionne dans Postgres et SQL-Server:

UPDATE users 
SET 
   field1 = f1, field2 = f2, field3 = f3
FROM
  ( VALUES ('value1', 'value2', 'value3')
  ) AS  x (f1, f2, f3)
WHERE condition ;

et comme l'a commenté @JackDouglas, cela fonctionne dans Oracle:

UPDATE users
SET  (field1, field2, field3)
   = ( SELECT 'value1', 'value2', 'value3' FROM dual ) 
WHERE condition ;
32
ypercubeᵀᴹ

Ce que vous avez publié n'est pas la syntaxe correcte pour UPDATE. Pour UPDATE votre syntaxe est:

UPDATE users 
SET field1 = 'value1',
    field2 = 'value2',
    field3 =  'value3';

Vous voudrez ajouter une clause WHERE ou cela UPDATE tous les enregistrements.

24
Taryn

Si vous souhaitez mettre à jour un enregistrement, il devrait ressembler à ceci. Vous devriez très rarement vouloir mettre à jour sans condition WHERE.

UPDATE users
SET field1='value1',
    field2='value2',
    field3='value3'
WHERE field1=1

SQL Fiddle

10
RichardTheKiwi

Essayer

UPDATE users SET field1='value1', field2='value2'

etc...

Vous pouvez trouver les documents officiels ici .

W3Schools a également un utile page :

Instruction SQL UPDATE

L'instruction UPDATE est utilisée pour mettre à jour les enregistrements d'une table.

Syntaxe de mise à jour SQL

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

Remarque: notez la clause WHERE dans la syntaxe UPDATE. La clause WHERE spécifie le ou les enregistrements à mettre à jour. Si vous omettez la clause WHERE, tous les enregistrements seront mis à jour!

EDIT: puisque vous semblez avoir besoin de créer une chaîne, la méthode normale pour le faire en toute sécurité est d'utiliser des instructions préparées.

En supposant que Java, nous avons déjà cet exemple sur StackOverflow:

SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteStatement stmt = db.compileStatement("SELECT * FROM Country WHERE code = ?");
stmt.bindString(1, "US");
stmt.execute();

Dans ton cas,

SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteStatement stmt = db.compileStatement("UPDATE users SET field1=?, field2=?...");
stmt.bindString(1, "value1");
stmt.bindString(2, "value2");
stmt.execute();
9
Sklivvz

Non, il y a non une telle syntaxe dans sqlite (postgres semble avoir une telle chose implémentée) - mais une meilleure utilisation:

UPDATE users SET firstname = 'Joe', lastname = 'value2', age = 50 WHERE id=12;
1
ingobaab