18

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

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

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

ノート:

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

4

6 に答える 6

33

あなたが提案したものに似た(標準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 ;
于 2012-11-20T21:16:59.957 に答える
23

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

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

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

于 2012-11-20T21:05:53.887 に答える
10

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

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

SQL フィドル

于 2012-11-20T21:07:03.673 に答える
8

試す

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

等...

公式ドキュメントはこちらにあります

W3Schools にも便利なページがあります。

SQL UPDATE ステートメント

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

SQL 更新構文

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();
于 2012-11-20T21:05:36.553 に答える
0

この機能は、バージョン 3.15.0 以降でサポートされています。

アップデート

SET 句での代入は、左側に列名を括弧で囲んだリスト、右側に同じサイズの行の値を指定できます。

構文は次のとおりです。

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

デシベル<>フィドルのデモ

于 2020-07-24T18:16:30.207 に答える