web-dev-qa-db-ja.com

SQLiteのUPDATE構文

UPDATEステートメントでこれを実行できるかどうかを知る必要があります。

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

または同様の構文。 SQLiteを使用しています。

注:

誰も私を理解していません。別々のフィールドを別々の値に設定できるかどうかを知りたいだけです。それで全部です。

15
calbertts

あなたが提案するものに似ている(標準SQL)構文がありますが、私が知る限り、Postgresだけがそれを実装しています:

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

(異教徒向け)でテスト済み:SQL-Fiddle


これはPostgresでも機能します:

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

これはPostgresとSQL-Serverで動作します:

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

@JackDouglasがコメントしたように、これはOracleで機能します。

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

投稿した内容は、UPDATEの正しい構文ではありません。 UPDATEの構文は次のとおりです。

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

WHERE句を追加するか、これによりすべてのレコードがUPDATEされます。

24
Taryn

レコードを更新する場合は、次のようになります。 WHERE条件なしで更新することはほとんどありません。

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

SQLフィドル

10
RichardTheKiwi

試して

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

等...

公式ドキュメントを見つけることができます こちら

W3Schoolsには、便利な page :もあります。

SQL UPDATEステートメント

UPDATEステートメントは、テーブル内のレコードを更新するために使用されます。

SQL UPDATE構文

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

注:UPDATE構文のWHERE句に注意してください。 WHERE句は、更新するレコードを指定します。 WHERE句を省略すると、すべてのレコードが更新されます!

編集:文字列を作成する必要があると思われるため、安全に行うための通常の方法は準備されたステートメントを使用することです。

Javaを想定して、StackOverflowにはすでに この例 があります。

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

あなたの場合、

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

いいえ、sqliteにはnoのような構文があります(postgresにはそのようなものが実装されているようです)-しかし、より適切に使用してください:

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