问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql 删除重复数据 但是不允许用delect 语句和 select into 语句 一条语句搞定 保留id最小的记录

发布网友 发布时间:2022-04-09 07:03

我来回答

3个回答

懂视网 时间:2022-04-09 11:24

方法1: 1、创建一个临时表,选取需要的数据。 2、清空原表。 3、临时表数据导入到原表。 4、删除临时表。 mysql> select * from student; +----+------+ | ID | NAME | +----+------+ | 11 | aa | | 12 | aa | | 13 | bb | | 14 | bb | | 15 | bb | | 16 | cc | +----+------+ 6 rows in set mysql> create temporary table temp as select min(id),name from student group by name; Query OK, 3 rows affected Records: 3 Duplicates: 0 Warnings: 0 mysql> truncate table student; Query OK, 0 rows affected mysql> insert into student select * from temp; Query OK, 3 rows affected Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from student; +----+------+ | ID | NAME | +----+------+ | 11 | aa | | 13 | bb | | 16 | cc | +----+------+ 3 rows in set mysql> drop temporary table temp; Query OK, 0 rows affected 这个方法,显然存在效率问题。 方法2:按name分组,把最小的id保存到临时表,删除id不在最小id集合的记录,如下: mysql> create temporary table temp as select min(id) as MINID from student group by name; Query OK, 3 rows affected Records: 3 Duplicates: 0 Warnings: 0 mysql> delete from student where id not in (select minid from temp); Query OK, 3 rows affected mysql> select * from student; +----+------+ | ID | NAME | +----+------+ | 11 | aa | | 13 | bb | | 16 | cc | +----+------+ 3 rows in set 方法3:直接在原表上操作,容易想到的sql语句如下: mysql> delete from student where id not in (select min(id) from student group by name); 执行报错:1093 - You can‘t specify target table ‘student‘ for update in FROM clause 原因是:更新数据时使用了查询,而查询的数据又做了更新的条件,mysql不支持这种方式。 怎么规避这个问题? 再加一层封装,如下: mysql> delete from student where id not in (select minid from (select min(id) as minid from student group by name) b); Query OK, 3 rows affected mysql> select * from student; +----+------+ | ID | NAME | +----+------+ | 11 | aa | | 13 | bb | | 16 | cc | +----+------+ 3 rows in set http://www.cnblogs.com/nzbbody/p/4470638.html

mysql删除重复记录,保存Id最小的一条

标签:

热心网友 时间:2022-04-09 08:32

你的字段都没搞出来,怎么啊,我假如你只有三个字段,一个ID,一个column1,column2吧:
Delete
From
table
where
ID
not
in
(Select
min(iD)
From
Table
group
by
column1,column2)
--有多少个字段,group
by
后面加多少个,ID除外
追问字段神马的不是非常重要的东西....就算有几十个字段也无所谓...主要看思想...字段索引的啥的
你可以按照自己的需求加
不让用delete
也不让用创建临时表的方法,
这两个方法我知道.
如果您有其他方法望不吝赐教...谢谢...

热心网友 时间:2022-04-09 09:50

你的字段都没搞出来,怎么啊,我假如你只有三个字段,一个ID,一个column1,column2吧:
Delete
From
table
where
ID
not
in
(Select
min(iD)
From
Table
group
by
column1,column2)
--有多少个字段,group
by
后面加多少个,ID除外
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么一些男性喜欢要求伴侣叫自己爸爸? proteus8中怎么放置引脚标号 ...在proteus里不知道用什么表示?有没有什么proteus中专门的中英文对照... 甜蜜家园郑毅铭是什么身份 甜蜜家园第二季郑毅铭喜欢谁 瑞梦喜智能空调床垫适合人群 小孩可以用智能床垫吗 智能床垫适合哪些人用 我父亲今年59岁,有高血压和颈椎病的病史,最近一段时间感觉一躺下就偏... ...刚从医院治疗回来。我想买个枕头给他,不知买怎样的比较好?_百度知 ... 有什么正规的外汇平台吗 抖音服务工单怎么样让客户撤销 护理专业学生可以考医师资格证吗 想知道护理本科如何才能考医师资格证。说不可以就不要回答了,不采纳。有办法的说一下,一定采纳! 护理专业可以报考口腔医师助理吗 我是护理专业,有什么途径获得口腔医学学历,报考口腔医生执业证吗 护士如何转行口腔医生? 专科学护理专业的能考医师资格证和医师执业证书吗? 护理(学)类专业能报名参加口腔执业助理医师考试吗? 护理专业毕业可以考医师证吗? 大专学历,护理学专业,可以报考口腔执业助理医师吗 学护理的可以考牙医吗? Mysql删除重复数据保留最小的id 的解决方法 水溶性精油可以做唇膏吗? 伤感个人说明 网名 个性签名 求一个那种让人难以接近的冷冷的网名 个性签名 个人说明 谢谢 一个我很爱又狠恨的人,想用他的名字做个网名表达的意思是他让我狠失望狠心疼…… 帮我想个伤感又不失个性的网名谢谢了,大神帮忙啊 谁能帮我想一套关于我的心好冷的网名,个性签名,和个性说明?最好非主流一点的,越伤感越好。 对讲机普通的那钟有两个按钮一个是说话下面那一个按钮按了就像电视没信号一样,那是啥 摩托罗拉GP2000对讲机几个按键分为ABCD~请问下PTT键是那个键。MOMITOR是那个键.+-的键请帮忙详细的说下。 雅诗兰黛雅诗兰黛 小棕瓶眼霜 15ml价格,多少钱 雅诗兰黛眼霜专柜价格是多少?求解。 雅诗兰黛小棕瓶眼霜从美国买多少钱 本年利润是负数应该是记借方还是记贷方?如果记贷方可否用负号表示_百 ... 本年利润是借方科目还是贷方科目 本年利润是贷方记增加借方记减少吧 月末,本年利润在借方表示亏损,贷方表示盈利吗? 本年利润余额在借方年末结转怎么处理? 怎样确认本年利润应计入借方还是贷方? 本年利润亏损在借方还是贷方 收入或 利润的余额在借方表示什么 为什么 本年利润账户余额在借方还是贷方 如何让iPhone 5S信号数字变回小圆点? 利润分配余额应该在借方还是贷方? iPhone怎样将信号数字变回小圆点方法 本年利润期末余额在借方表示什么 还用结转到利润分配——未分配利润账户中吗?怎样结转? 本年利润余额在借方怎么结转? 本年利润借方余额表示哪些 景甜身材微胖却不腻,你会喜欢这种身材吗? 景甜把饱满身材藏起来了,身穿一袭黄色抹胸裹身裙亮相,你看了吗?