SQL删除id号不同,其他都相同的学生冗余信息


                   .学生表 如下:
                  id号 学号 姓名 课程编号 课程名称 分数
                  1 2005001 张三 0001 数学 69
                  2 2005002 李四 0001 数学 89
                  3 2005001 张三 0001 数学 69
                  A: delete from tablename where id号 not in(select min(id号) from
                  tablename group by 学号,姓名,课程编号,课程名称,分数)
                  实验:
                  create table student2(id int auto_increment primary key,code
                  varchar(20),name varchar(20));
                  insert into student2
                  values(null,'2005001','张三'),(null,'2005002','李四'),(null,'2005001','张三');
                  //如下语句,mysql报告错误,可能删除依赖后面统计语句,而删除又导致统计语句结果不一致。
                  delete from student2 where id not in(select min(id) from
                  student2 group by name);
                  //但是,如下语句没有问题:
                  select * from student2 where id not in(select min(id) from
                  student2 group by name);
                  //于是,我想先把分组的结果做成虚表,然后从虚表中选出结果,最后再将结果作为删除的条件数据。
                  delete from student2 where id not in(select mid from (select
                  min(id) mid
                  from student2 group by name) as t);
                  或者:
                  delete from student2 where id not in(select min(id) from
                  (select * from s
                  tudent2) as t group by t.name);
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值