有一张桌子
STOCK_ITEM (id number (2),
item varchar2 (20),
purchase_date date,
quantity number (2))
有笔记本电脑,桌面电话,手机,电视及其描述等项目清单。
我们必须编写一个更新查询,将笔记本电脑更新到桌面和桌面到笔记本电脑。
我怎样才能实现这个目标?
以下是样本数据:
insert into stock_item values (1,'laptop','01/17',4);
insert into stock_item values (2,'desktop','02/17',3);
insert into stock_item values (3,'laptop','03/17',2);
insert into stock_item values (4,'tv','11/17',6);
insert into stock_item values (5,'fridge','07/17',5);
insert into stock_item values (6,'desktop','05/17',9);
答案 0 :(得分:3)
使用解码值进行1次更新:
update STOCK_ITEM set ITEM=decode(ITEM,'laptop', 'desktop','desktop', 'laptop', ITEM);
更新笔记本电脑后的记录将被替换为桌面而相反。
答案 1 :(得分:3)
我会写更新语句,如:
update stock_item
set item = case lower(item)
when 'laptop' then 'desktop'
when 'desktop' then 'laptop'
end
where lower(item) in ('laptop', 'desktop');
这样,您只需要更新需要更改的行,并且case表达式在意图上比解码更清晰,使其更易于阅读和维护。
我使用了较低的功能来确保所有笔记本电脑或台式机(无论是LAPTOP,LaPtOp,笔记本电脑等)都会更新。