Подтвердить что ты не робот

Синтаксис UPDATE в SQLite

Мне нужно знать, могу ли я сделать это в инструкции UPDATE:

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

Или аналогичный синтаксис. Я использую SQLite.

Примечание:

Никто меня не понимает, я просто хочу знать, можно ли устанавливать отдельные поля для разделения значений. Это все.

4b9b3361

Ответ 1

Существует (стандартный 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 ;

Ответ 2

То, что вы разместили, не является правильным синтаксисом для UPDATE. Для UPDATE ваш синтаксис:

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

Вам нужно добавить предложение WHERE или это будет UPDATE все записи.

Ответ 3

Если вы хотите обновить запись, она должна выглядеть так. Вы очень редко хотите обновляться без условия WHERE.

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

SQL Fiddle

Ответ 4

Try

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

и т.д...

Здесь вы можете найти официальные документы здесь.

W3Schools также имеет полезную страницу:

Заявление SQL UPDATE

Оператор UPDATE используется для обновления записей в таблице.

Синтаксис SQL UPDATE

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

Примечание. Обратите внимание на предложение WHERE в синтаксисе UPDATE. Предложение WHERE указывает, какую запись или записи следует обновить. Если вы опустите предложение WHERE, все записи будут обновлены!

EDIT: поскольку вам кажется, что вам нужно создать строку, обычный способ сделать это безопасно - использовать подготовленные инструкции.

Предполагая 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();

Ответ 5

Нет, нет такого синтаксиса в SQLite (Postgress кажется, что такие вещи реализованы) - но лучше использовать:

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