Можно ли одним запросом сделать такое?
Если 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
Комментариев нет:
Отправить комментарий