数码资讯
一个SQL语句完成MySQL来保留一个
几天前,当我提出要求时,我需要清理MySQL中的重复记录。当时,这个想法是通过代码遍历编写的,然后我觉得它太复杂了。我想我应该通过SQL语句解决一个问题。检查信息,让大个子得到一个非常方便的SQL语句,在这里分享这一部分的SQL语句和想法。 需求分析 数据库中有一个重复记录,其中一个的保留被保留。
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
几天前,当我提出要求时,我需要清理MySQL中的重复记录。当时,这个想法是通过代码遍历编写的,然后我觉得它太复杂了。我想我应该通过SQL语句解决一个问题。检查信息,让大个子得到一个非常方便的SQL语句,在这里分享这一部分的SQL语句和想法。
需求分析
数据库中有一个重复记录,其中一个的保留被保留。
解决方案
说到这个需求,头脑可能在思考,最快的是可以用SQL语句解决,但对于复杂的SQL语句,它们的语句太浅了,所以我想找到大帮助。
请求帮助
因为这需要有点着急,所以开始想一想,可以找到这个同行来解决这个问题,然后分享给同事,把货送到百度,你给我一个从未用过的SQL语句,让我试试,心10000那奔腾什么…
自己的百度
找到一个SQL语句:
删除
从
学历
哪里
(a.peopleid,a.seq(中)
选择
只,
序列
从
简历
组
只,
序列
有
计数(*)> 1
)
和ROWID不(
选择
min(rowid)
从
简历
组
只,
序列
有
计数(*)> 1
)
这个语句在MySQL中只有一个重复数据的文章中找到。这个SQL思想非常明显,有以下3个步骤:
只从简历的选择,只组测序,序列具有计数(*)> 1查询重复记录表中作为条件
选择min(rowid)表组只,序列具有计数(*)> 1查询出表,ID最小值是第二条件
最后,根据上述两个条件删除重复记录中的最小id的剩余重复记录。
但是,在错误地运行这个语句是非常无助的,在查询时更新表通常是错误的。
编码方案
根据上面的SQL语句,可能在两个步骤中实现相同的目标,可能是通过代码的方式实现的:
首先取出一组重复的数据。
从收集的数据集中删除其余的数据
这个想法是存在的,而且写得很快,但一旦操作使我害怕,它需要116s左右,然后我想找到SQL语句可以使用粘贴的代码和运行结果。
完美的SQL
最后,我们在一组技术中得到了完美的答案,并查看SQL语句:
删除consum_record
从
consum_record,
(
选择
分钟(id)id,
user_id,
货币的,
consume_time
从
consum_record
组
user_id,
货币的,
consume_time
有
计数(*)> 1
T2)
哪里
consum_record.user_id = t2.user_id
和consum_record.monetary = t2.monetary
和consum_record.consume_time = t2.consume_time
和consum_record.id > t2.id;
上面的sql语句,仔细看看,想出来的想法并不难,大概也分为3个步骤来理解:
(选择min(ID)的身份,user_id,货币,从consum_record组,1,货币consume_time,查询形成一套的重复记录(临时表),每个重复记录的最小的部分。
consum_record.user_id = t2.user_id和consum_record.monetary = t2.monetary和consum_record.consume_time = t2.consume_time协会决定重复数据领域。
根据条件,删除原始表中id大于T2中id的记录。
当你看到这个语句时,我认为它太多了,所以一个简单的SQL语句可以解决如此复杂的问题并摆出一个姿势。
它跑的超级快,周期的原代码被执行,它需要116s,这里0.3s是好的。
总结
作为一个PHP程序猿,SQL不能被合理地拖到后面,但实际上它需要太多繁忙的东西。现在SQL级别只有普通级别。在那之后,我们必须弥补这方面的知识。
今天在这里。
需求分析
数据库中有一个重复记录,其中一个的保留被保留。
解决方案
说到这个需求,头脑可能在思考,最快的是可以用SQL语句解决,但对于复杂的SQL语句,它们的语句太浅了,所以我想找到大帮助。
请求帮助
因为这需要有点着急,所以开始想一想,可以找到这个同行来解决这个问题,然后分享给同事,把货送到百度,你给我一个从未用过的SQL语句,让我试试,心10000那奔腾什么…
自己的百度
找到一个SQL语句:
删除
从
学历
哪里
(a.peopleid,a.seq(中)
选择
只,
序列
从
简历
组
只,
序列
有
计数(*)> 1
)
和ROWID不(
选择
min(rowid)
从
简历
组
只,
序列
有
计数(*)> 1
)
这个语句在MySQL中只有一个重复数据的文章中找到。这个SQL思想非常明显,有以下3个步骤:
只从简历的选择,只组测序,序列具有计数(*)> 1查询重复记录表中作为条件
选择min(rowid)表组只,序列具有计数(*)> 1查询出表,ID最小值是第二条件
最后,根据上述两个条件删除重复记录中的最小id的剩余重复记录。
但是,在错误地运行这个语句是非常无助的,在查询时更新表通常是错误的。
编码方案
根据上面的SQL语句,可能在两个步骤中实现相同的目标,可能是通过代码的方式实现的:
首先取出一组重复的数据。
从收集的数据集中删除其余的数据
这个想法是存在的,而且写得很快,但一旦操作使我害怕,它需要116s左右,然后我想找到SQL语句可以使用粘贴的代码和运行结果。
完美的SQL
最后,我们在一组技术中得到了完美的答案,并查看SQL语句:
删除consum_record
从
consum_record,
(
选择
分钟(id)id,
user_id,
货币的,
consume_time
从
consum_record
组
user_id,
货币的,
consume_time
有
计数(*)> 1
T2)
哪里
consum_record.user_id = t2.user_id
和consum_record.monetary = t2.monetary
和consum_record.consume_time = t2.consume_time
和consum_record.id > t2.id;
上面的sql语句,仔细看看,想出来的想法并不难,大概也分为3个步骤来理解:
(选择min(ID)的身份,user_id,货币,从consum_record组,1,货币consume_time,查询形成一套的重复记录(临时表),每个重复记录的最小的部分。
consum_record.user_id = t2.user_id和consum_record.monetary = t2.monetary和consum_record.consume_time = t2.consume_time协会决定重复数据领域。
根据条件,删除原始表中id大于T2中id的记录。
当你看到这个语句时,我认为它太多了,所以一个简单的SQL语句可以解决如此复杂的问题并摆出一个姿势。
它跑的超级快,周期的原代码被执行,它需要116s,这里0.3s是好的。
总结
作为一个PHP程序猿,SQL不能被合理地拖到后面,但实际上它需要太多繁忙的东西。现在SQL级别只有普通级别。在那之后,我们必须弥补这方面的知识。
今天在这里。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。