Oracle Sql一次更新多个记录吗?

时间:2018-12-20 15:52:07

标签: sql oracle oracle11g

是否可以在一个sql查询中更新多个记录?
因此,将所有ID为 A 和ip 1.1.1.1 的打印机的状态更新为工作(true),将所有其他打印机的状态都不工作(false)
因此,基本上将这两个查询组合为一个查询:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Click anywhere to trigger the resize

表结构:

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'

更新
我忘了row_update_date!

3 个答案:

答案 0 :(得分:2)

或者,您可以将decode用于switch-case类型语句的Oracle SQL

update printers 
   set status = decode(printer_IP,'1.1.1.1','true','false'),
       row_update_date = sysdate
 where printer_ID = 'A';

答案 1 :(得分:1)

您可以尝试将UPDATECASE 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'

答案 2 :(得分:1)

您可以使用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'