SQL-刷题技巧-删除重复记录
一. 原题呈现
牛客 SQL236. 删除emp_no重复的记录,只保留最小的id对应的记录。
描述:
删除emp_no重复的记录,只保留最小的id对应的记录。
drop table if exists titles_test;
CREATE TABLE titles_test (id int(11) not null primary key,emp_no int(11) NOT NULL,title varchar(50) NOT NULL,from_date date NOT NULL,to_date date DEFAULT NULL);insert into titles_test values
('1', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('2', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('3', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('4', '10004', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('5', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('6', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('7', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01');
二. 题目分析与解答
1.高赞歧义解答
参考于【4】:
delete from titles_test where id not in(select min(id) from titles_test group by emp_no
)
此方法思路是对的,但是在OJ中会出错,出错原因可参考第三章节。
2.join方法
delete from titles_test where id in(select * from (select t1.id from titles_test t1 join titles_test t2on t1.id > t2.idwhere t1.emp_no = t2.emp_no)t1
)
自连接,通过 t1.emp_no = t2.emp_no,筛选出t1.id > t2.id,并删除,此时依然需要额外用别表。
下面的解法依然会报错"You can't specify target table 'titles_test' for update in FROM clause"
delete from titles_test where id in(select t1.id from titles_test t1 join titles_test t2on t1.id > t2.idwhere t1.emp_no = t2.emp_no
)
3.group by妙用
在高赞歧义解答中,使用group by聚合每个emp_no中的最小值,以此来选出最小的id,在后续的操作中只需要选出不是最小id的条目即可。
三. "You can't specify target table 'titles_test' for update in FROM clause"
出错原因参考【1】:

简单来说就是 同表不支持 update 子查询的结果
而sqllite可以这样做
更改方法【2】:
delete from titles_test where id not in(select * from(select min(id) from titles_test group by emp_no)t1
)
另外,t1的别名是不可省略的,否则会出错,可参考【3】:
ERROR 1248 (42000): Every derived table must have its own alias
简单来说就是 子查询的结果需要作为一个表交给上一层查询,需要列别名
参考来源
【1】博客园 缥缈之旅 ERROR 1093
【2】牛客 野生的桔子 SQL239
【3】爱佳男士 1248 - Every derived table must have its own alias (MYSQL错误)
【4】牛客 ciphersaw SQL239
相关文章:
SQL-刷题技巧-删除重复记录
一. 原题呈现 牛客 SQL236. 删除emp_no重复的记录,只保留最小的id对应的记录。 描述: 删除emp_no重复的记录,只保留最小的id对应的记录。 drop table if exists titles_test; CREATE TABLE titles_test (id int(11) not null primary key…...
基于JSP的虚拟账号交易平台
技术:Java、JSP等摘要:随着网络游戏以及各种平台的出现与更新,虚拟账号交易平台正逐渐成为电商的新增长点。当今社会,互联网发发展飞速,游戏产业也渐渐兴起,随之虚拟游戏账号的交易量逐渐增多,但…...
LeetCode201_201. 数字范围按位与
LeetCode201_201. 数字范围按位与 一、描述 给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。 示例 1: 输入:left 5, right 7 输…...
一款好的风险管理软件可以做什么
风险管理软件哪个好?使用Zoho Projects易于使用的项目风险管理软件,最大限度地减少收入损失并快速调整您的投资组合,保护您的项目投资。Zoho Projects的高级风险管理软件可在您最需要的时候安全的保护您的业务。使用Zoho Projects强大的风险管…...
html2canvas使用文档
一、安装 Install NPM npm install --save html2canvasInstall Yarn yarn add html2canvas二、引入 import html2canvas from html2canvas;三、使用 以 vue 举例,这样写起来比较方便 <div ref"picture"><h4>Hello world!</h4> &l…...
HTML DOM 改变 CSS
HTML DOM 允许 JavaScript 改变 HTML 元素的样式。改变 HTML 样式如需改变 HTML 元素的样式,请使用这个语法:document.getElementById(id).style.propertynew style 下面的例子会改变 <p> 元素的样式:实例<html><body><…...
基于EB工具的TC3xx_MCAL配置开发01_WDG模块配置介绍
目录 1.概述2. WDG 配置2.1 General部分配置2.2 WdgSettingsConfig配置2.2.1 配置概述2.2.2 CPU WDG具体配置2.3 WdgDemEventParameterRefs3. WDG配置注意事项1.概述 本篇开始我们基于EB Tresos工具对英飞凌TC3xx系列MCU的MCAL开发进行介绍,结合项目经验对各MCAL外设的开发及…...
Activty启动到显示的过程[二]
Activity的显示从handleResumeActivity()方法开始。 //ActivityThread.javaOverridepublic void handleResumeActivity(IBinder token, boolean finalStateRequest, boolean isForward,String reason) {final ActivityClientRecord r performResumeActivity(token, finalStat…...
ubuntu 18.04.06LST安装R4.0+版本报错及解决过程
1. sudo apt-get update无法正常使用 错误:13 http://ppa.launchpad.net/webupd8team/sublime-text-3/ubuntu bionic Release 404 Not Found [IP: 2620:2d:4000:1::3e 80] 解决措施:删除 webupd8team/sublime-text-3这个ppa文件。 sudo add-apt-repository --…...
数据湖架构Hudi(五)Hudi集成Flink案例详解
五、Hudi集成Flink案例详解 5.1 hudi集成flink flink的下载地址: https://archive.apache.org/dist/flink/ HudiSupported Flink version0.12.x1.15.x、1.14.x、1.13.x0.11.x1.14.x、1.13.x0.10.x1.13.x0.9.01.12.2 将上述编译好的安装包拷贝到flink下的jars目录…...
【Java学习笔记】9.Java 循环结构 - for, while 及 do...while
Java 循环结构 - for, while 及 do…while 顺序结构的程序语句只能被执行一次。 如果您想要同样的操作执行多次,就需要使用循环结构。 Java中有三种主要的循环结构: while 循环do…while 循环for 循环 在 Java5 中引入了一种主要用于数组的增强型 f…...
【面向对象初步】之面向对象VS面向过程
面向对象(ObjectorientedProgramming,OOP)编程的思想主要是针对大型软件设计而来的。面向对象编程使程序的扩展性更强、可读性更好,使的编程可以像搭积木一样简单。 面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维,从而大大提…...
原型链(回顾)
概念prototype__proto__原型链查找机制万物皆对象判断私有/共有属性方法Object.prototype.prototype nullObject.create(proto, [propertiesObject])给类的原型上扩展属性方法的4种方法Fn.prototype.xxx xxxObject.prototype.xxx xxxf1.proto.xxx xxx原型重定向 概念 原型…...
DS内排—2-路归并排序
目录 题目描述 AC代码 题目描述 输入一组字符串,用2-路归并排序按字典顺序进行降序排序。 输入 测试次数t 每组测试数据:数据个数n,后跟n个字符串,字符串不含空格。 输出 对每组测试数据,输出2-路归并排序的每…...
深度账户抽象(Account Abstraction)第 3 部分:Wallet创建
Wallet创建 我们还没有解决的是每个用户的钱包合约最初是如何在区块链上结束的。部署合约的“传统”方式是使用 EOA 发送包含合约部署代码的且没有收件人的交易。这在这里会非常令人不满意,因为我们刚刚做了很多工作来实现它,所以有人可以在没有 EOA 的情况下与链交互。如果用…...
代码分享:面波数据快速成图
代码分享:面波数据快速成图 前言 目前,物探数据主要用surfer软件成图,surfer软件具有强大的插值和绘图功能,成图比较美观。但是,生产过程中大量的物探数据,依靠excel和surfer来成图耗费人力时间成本。本博…...
常见数据结构
一. 数据结构概述、栈、队列 1. 数据结构概述 2. 栈数据结构的执行特点 3. 常见数据结构之队列 二. 常见数据结构之数组 数组它就是内存中的一块儿连续区域。数组变量存的是数组在堆内存当中的起始地址。数组查询任意索引位置的值耗时相同,数组根据索引查询速度快。…...
Mycat
Mycat 1.概述 1.Mycat是数据中间件2.中间件:连接软件组件和应用的计算机软件,便于软件和各部件的交互3.数据中间件:连接Java应用程序与数据库的软件2.适用场景 1.Java与数据库紧耦合(直接连接)2.高访问量高并发对数据库压力(集群)3.读写请求数据不一致(读写分离+主从复制)3.…...
Java 编写Vue组件(VueGWT的初尝试)
在之前,我曾写过这样的文章《不会前端没事,用GWT Boot和Spring Boot构建Web程序》,这篇文字使用的Domino UI来做前端页面,由于现在更流行VUE,并且VUE的页面更具现代化,所以我尝试了一下VueGWT。 VueGWT 有…...
【第二章 @RequestMapping注解(value,method,params属性),springMVC支持ant风格的路径,支持路径中的占位符】
第二章 RequestMapping注解(value,method,params属性),springMVC支持ant风格的路径,支持路径中的占位符 1. RequestMapping注解: (1) RequestMapping注解的作用就是将请…...
终极图像超分辨率神器:waifu2x-caffe完整使用指南
终极图像超分辨率神器:waifu2x-caffe完整使用指南 【免费下载链接】waifu2x-caffe waifu2xのCaffe版 项目地址: https://gitcode.com/gh_mirrors/wa/waifu2x-caffe 你是否曾为低分辨率图片的模糊细节而烦恼?想要将心爱的动漫壁纸放大到4K分辨率&a…...
本地大模型无缝集成IDE:TRAE-Ollama-Bridge透明代理方案详解
1. 项目概述与核心痛点 如果你和我一样,是个喜欢在本地折腾大模型的开发者,那你肯定对 Ollama 不陌生。它能让我们在个人电脑上轻松运行 Llama、Qwen、DeepSeek 这些开源模型,速度快,隐私好,还不用花 API 调用费。但问…...
从入门到精通:Python开发在Web后端的实战应用
在当今快速发展的互联网时代,Web后端开发作为连接前端界面与数据库的核心,其重要性不言而喻。Python,凭借其简洁的语法、强大的库支持以及活跃的社区,已成为Web后端开发的热门选择。本文将带你从零开始,逐步掌握Python…...
别急着扔!XBOX ONE X黑屏自救指南:30元芯片+手机维修店搞定HDMI故障
XBOX ONE X黑屏故障低成本修复全攻略:30元芯片手机维修店实战方案 当你的XBOX ONE X突然黑屏无信号时,先别急着宣告它"死亡"或花大价钱送修。这种常见故障往往只是HDMI芯片(TDP158 G4)损坏,而解决方案可能比…...
VMware Workstation Pro 17免费许可证密钥终极指南:快速激活专业虚拟化工具
VMware Workstation Pro 17免费许可证密钥终极指南:快速激活专业虚拟化工具 【免费下载链接】VMware-Workstation-Pro-17-Licence-Keys Free VMware Workstation Pro 17 full license keys. Weve meticulously organized thousands of keys, catering to all major …...
工程师如何驾驭参考设计:从复制到创新的实战指南
1. 参考设计的双刃剑:工程师的“爱恨情仇”在电子工程这个行当里混了十几年,我发现自己对“参考设计”的感情,就像对一位能力超群但性格有点别扭的同事。你离不开他,因为他总能帮你快速搞定最棘手的难题,让你在项目截止…...
人机冲突类型学:基于意义行为原生论与自感痕迹论的系统性分析
人机冲突类型学:基于意义行为原生论与自感痕迹论的系统性分析 摘要:本文旨在构建一种新的人机冲突类型学,其理论基础是岐金兰的“意义行为原生论”与“自感痕迹论”。不同于现有研究从外部功能或伦理原则出发分类冲突,本文提出&am…...
AI代码工程化实战:从生成到部署的确定性框架
1. 项目概述:从“AI画饼”到“AI交付”的工程化桥梁如果你和我一样,在过去一年里深度使用过 Claude Code、Cursor 或者 GitHub Copilot,那你一定经历过这种场景:AI 助手噼里啪啦生成了一大堆看起来非常酷炫的代码,你兴…...
Yarbo 机器人割草机调整策略:远程后门访问功能将设为可选安装
Yarbo 调整远程后门访问功能,设为可选安装Yarbo 原有的远程后门访问功能可能使不法分子通过互联网对机器人进行重新编程。如今,该公司计划彻底移除这一功能,联合创始人肯尼斯科尔曼承诺,客户将能够决定是否一开始就安装该功能&…...
基于多智能体协作的AI开发流程:三人团队模式解析与实践
1. 项目概述与核心痛点如果你和我一样,在日常开发中深度依赖像Claude这样的AI编码助手,那你一定也经历过那种“又爱又恨”的时刻。爱的是它强大的代码生成和理解能力,恨的是它时不时会“放飞自我”——比如你只想让它修改一个函数,…...
