Страницы

Поиск по вопросам

суббота, 6 июля 2019 г.

Как составить sql запрос на обновление разных полей таблицы в зависимости от значения конкретного поля

Можно ли одним запросом сделать такое?
Если date2 IS NOT NULL: UPDATE table SET date1 = date2, date2 = NULL, status = 1 WHERE id IN (123,124,125) Если же date2 = NULL: UPDATE table SET status = 1 WHERE id IN (123,124,125)


Ответ

Пример
Если date2 не NULL, данные из date2 были копированы в date1, а потом date2 был назначен NULL.
Если date2 = NULL , то date1 не трогаем

create table table1 ( id int, date1 date, date2 date, status int );

insert into table1 (id,date1,date2,status) values (123, '2018-07-01','2018-07-20',0), (124, '2018-07-07',null,0)

select * from table1
id | date1 | date2 | status --: | :--------- | :--------- | -----: 123 | 2018-07-01 | 2018-07-20 | 0 124 | 2018-07-07 | null | 0

UPDATE table1 SET date1 = IF(date2 is null,date1,date2), date2 = NULL, status = 1 WHERE id IN (123,124,125)

select * from table1
id | date1 | date2 | status --: | :--------- | :---- | -----: 123 | 2018-07-20 | null | 1 124 | 2018-07-07 | null | 1
db<>fiddle here

Комментариев нет:

Отправить комментарий