如何删除重复数据

遇到一个简单的sql问题,让从一张表里删除重复数据,一时竟然没写出来,现在总结如下:

有A表,结构为ID,NAME,有六个数据如图:

删除表中重复的数据只留a,b,c三个值

注意:不是简单的去重,所以用distinct不行。

我写的语句是

但是执行报错,错误如下:

这个错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中),这一点感觉mysql也太不强大了,个人感觉这样逻辑上没啥问题啊,不知道mysql为何不能执行。

只好把查询的结果表重命名一下。改为:

结果是执行成功了,但是报了一个错如下:

这个错误意思是:sql中select后面的字段必须出现在group by后面,或者被聚合函数包裹,不然会抛出上面的错误 ,真是好扯淡啊,意思是你查出这个值就必须按这个值进行分组,这应该是sql_mode设置的问题,果断改下sql_mode,去掉only_full_group_by

可以修改

vim /etc/mysql/my.cnf 配置

也可以直接SQL改

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

-- 查看SQL_MODE SELECT @@sql_mode;

然后就ok了,sql语句可以改的更精简点:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值