Oracle Sql обновить несколько записей одновременно? - PullRequest
0 голосов
/ 20 декабря 2018

Можно ли обновить несколько записей в одном SQL-запросе?
, поэтому обновите состояние всех принтеров с идентификатором A и ip 1.1.1.1 до работающего (true)и все остальное как не работающее (false)
Таким образом, в основном объединение этих двух запросов в один запрос:

update printers set status = true ,row_update_date =sysdate where printer id = 'A' and printer ip = '1.1.1.1'
update printers set status = false ,row_update_date =sysdate where printer id = 'A' and printer ip != '1.1.1.1'

структура таблицы:

printers table:

printer ID,printer ip, status,row_update_date 
A         ,1.1.1.1   ,
A         ,1.1.1.2   ,
A         ,1.1.1.3   ,
A         ,1.1.1.4   ,
B         ,1.1.2.1   ,
B         ,1.1.2.2   ,

UPDATE
Я забыл row_update_date!

Ответы [ 3 ]

0 голосов
/ 20 декабря 2018

Вы можете использовать CASE:

update printers 
set status = CASE WHEN printer ip = '1.1.1.1' THEN true ELSE false END
    ,row_update_date = SYSDATE
where printer id = 'A' 
0 голосов
/ 20 декабря 2018

В качестве альтернативы, вы можете использовать decode для Oracle Oracle для switch-case операторов типа

update printers 
   set status = decode(printer_IP,'1.1.1.1','true','false'),
       row_update_date = sysdate
 where printer_ID = 'A';
0 голосов
/ 20 декабря 2018

Можно попробовать UPDATE с CASE WHEN

update printers 
set status = (CASE WHEN  printer ip = '1.1.1.1' 
                        THEN true
                   WHEN  printer ip != '1.1.1.1' 
                        THEN false 
              END)
WHERE printer id = 'A'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...