我有三张桌子:
menu_tab 有列(menu_id,menu_description)
item_tab 有列(item_id、item_name、item_description、item_price)
menu_has_item有列{(menu_tab_menu_id --->这是menu_id的外键(menu_tab中的pk)),item_tab_item_id ---这是item_id的外键(item_tab中的pk))4
会遇到2种重复
1)同一个menu_description中的项目重复
2)不同菜单描述中的项目重复
示例:午餐菜单中的两个鸡肉三明治。午餐菜单中一份鸡肉三明治,晚餐菜单中一份鸡肉三明治 _description
menu_tab
menu_id menu_description
1 lunch
2 dinner
3 Specials
item_tab
item_id item_description
1 b
2 d
3 g
4 x
5 g delete g
6 d
7 e
8 b delete b
9 x
menu_has_tab
menu_tab_menu_id item_tab_item_id
1......................................1
1......................................2
1.................................3
1.................................4
2.................................5 替换为 3
2.................................6
3.................................7
3.................................8 替换为 1
3.................................9
删除重复项后,如何使用替换值更新我的菜单项?
begin
for x in (
-- find duplicate items
select *
from (select rowid row_id,
item_id,
item_description,
row_number() over(partition by item_description order by
item_description) row_no
from item_tab)
where row_no > 1) loop
-- replaceing duplicate Items
update menu_has_item
set menu_has_item.item_tab_item_id =
( select item_id
from (select item_id,
row_number() over(partition by item_description order by
item_description) row_no
from item_tab where
item_tab.item_description = x.item_description)
where row_no = 1)
where menu_has_item .item_tab_item_id = x.item_id;
-- deleting duplicate items
delete item_tab where rowid = x.row_id;
end loop;
-- commit;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)