gpt4 book ai didi

mysql - 删除sql中的重复项并相应地修改关系表

转载 作者:行者123 更新时间:2023-11-29 00:34:29 25 4
gpt4 key购买 nike

我有三个表: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)同一菜单中的项目重复_description2)不同菜单描述中的项目重复

示例:午餐菜单中的两个鸡肉三明治。午餐一份鸡肉三明治,晚餐菜单一份鸡肉三明治 _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

如何在删除重复项后使用替换值更新我的 menu_has_item?

最佳答案

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;

关于mysql - 删除sql中的重复项并相应地修改关系表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15009190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com