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

2023-12-11

我有三张桌子: 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(使用前将#替换为@)

删除sql中的重复项并相应修改关系表 的相关文章

随机推荐

  • 在 matlab 等高线图中选择特定水平

    我有这个plot我生成它是为了测试等值线图在 matlab 上的工作原理 我想弄清楚是否有一种方法可以只绘制其中一条线 但不一定是第一条线 Matlab 的解释是 如果你这样做 contour X Y Z 1 它会绘制其中一条线 但它始终是
  • Oracle SQL 对版本号进行排序

    在 Oracle 中 只需使用ORDER BY不对版本号进行排序 我的Version Number字段被声明为VARCHAR我无法改变它 例如 以下版本 1 20 1 9 1 18 1 13 1 5 1 11 2 0 1 8 1 3 1 2
  • 使用SFTP / RCurl创建远程目录

    是否可以使用 RCurl 包在 SFTP 站点上创建目录 我找到了sftp create dirs函数 但我找不到如何使用它的示例 我尝试设置ftp create missing dirs选项TRUE as in library RCurl
  • JavaScript 提升函数与函数变量

    这是我的 JavaScript 代码 console log a c b var a Hello World var b function console log B is called function c console log C i
  • AttributeError:构建逻辑回归模型时“str”对象没有属性“decode”[重复]

    这个问题在这里已经有答案了 我正在尝试建立一个逻辑回归模型 但它显示了AttributeError str object has no attribute decode 请帮我解决这个问题 该代码在 Datacamp 的服务器上完美运行 但
  • ValueError:解析日期时时间数据与格式不匹配

    当我尝试将字符串解析为日期时间时 我这样做 之前已导入日期时间 fecha 2 datetime strptime 22 01 2019 17 00 d m y H M 但是 我收到此错误 ValueError 时间数据 22 01 201
  • PHP 方法链接的好处?

    仍在 PHP OOP 训练轮上 这个问题可能属于失败博客网站 PHP 中的方法链有什么好处 我不确定这是否重要 但我将静态调用我的方法 例如 foo Bar get sysop gt set admin gt render 根据我的阅读 任
  • 从 GradientBoostingClassifier 中提取决策规则

    我已经解决了以下问题 如何提取梯度提升分类器的决策规则 如何从 scikit learn 决策树中提取决策规则 然而以上两个并没有解决我的目的 以下是我的查询 我需要使用gradientboostingclassifer在Python中构建
  • 为什么在输入n之前声明数组的大小为n,第一次有效,但第二次就不行了?

    我正在解决一个问题 在输入 n 的值之前 我将数组的大小声明为 n 它适用于第一个测试用例 但不适用于第二个测试用例 为什么 P S 我在网上找不到任何相关信息 这是代码片段 int n arr n cin gt gt n int n ar
  • 快速从 findObjectsInBackgroundWithBlock 获取数据

    我正在使用 Parse 从数据库中获取数据 当块 findObjectsInBackgroundWithBlock 被调用时 会传递一个数组 由于我只接收一行数据 因此它全部出现在数组的一个 0 部分中 那么我如何从该数组中获取所有位 这是
  • 正确的表格标题

    语义问题 如果我有一个基本上是一张大表的 HTML 页面 我应该使用什么元素作为标题 通常 您会使用h1用于页面标题 以及caption作为表格的标题 但是 如果表格是页面上唯一的内容怎么办 包括两者看起来有点傻 那我用一个h1并忘记cap
  • 未找到配置或 get/set 在 Angular 6 中已被弃用

    ng config global defaults styleExt scss 错误 找不到配置 ng set global defaults styleExt scss 错误 get set 已被弃用 取而代之的是 config 命令 已
  • PyQT5错误:无法找到或加载Qt平台插件xcb

    直到 为止Anaconda3 其中包含Python 3 4 已重新安装在我的RedHat 6 5工作站 我已经能够开发使用的Python应用程序PyQT5 重新安装后Anaconda我收到一条错误消息 无法找到或加载 Qt 平台插件 xcb
  • React 虚拟化下拉菜单被溢出剪切:隐藏

    我正在为我的表使用react virtualized 我想在单击单元格中的按钮时显示一个下拉菜单 问题是我的下拉菜单被表格的行高抑制 行高 40 行高度 200 我玩过css定位 但到目前为止没有任何效果 下拉菜单代码 div div
  • 具有线程的多上下文 CoreData

    UPDATE 我想问题是保存子上下文时父上下文没有更新 仍然需要帮助 我尝试过很多多上下文 父子 核心数据的例子 以前我的应用程序使用传统的数据存储方式 即我使用了一个OperationQueue 我从服务器获取数据并使用MOC保存到数据库
  • SQL Server 查找不同行之间的 datediff、总和

    我正在尝试构建一个查询来分析我们的时间跟踪系统中的数据 每次用户滑入或滑出时 它都会生成一行记录滑入时间以及 在场 或 场外 进入或退出 在用户 Joe Bloggs 的情况下 有 4 行 我想将其配对并计算 Joe Bloggs 在网站上
  • 出现异常“并非所有代码路径都返回值”

    您好 我有一个使用查询更新 MySQL 表的方法 我使用 MS Visual Studio 和 phpmyadmin 作为 SQL 客户端 Method public static Member updateMember string un
  • Maven无法连接到docker内的网络

    我正在尝试克隆一个 git 项目并执行以下操作mvn package在码头工人里面 但是maven无法连接网络下载依赖项 这是Dockerfile FROM java 8 FROM maven ADD id rsa root ssh id
  • 使用 Solrj / Spring Data Solr 实现标记和排除过滤器

    我正在尝试在字段上实现多选的 Solr Facet 搜索 举这个例子 http docs lucidworks com display solr Faceting Faceting LocalParametersforFaceting 我想
  • 删除sql中的重复项并相应修改关系表

    我有三张桌子 menu tab 有列 menu id menu description item tab 有列 item id item name item description item price menu has item有列 me