关于聚合函数的课后作业

现在有一个表:

id,name,age
1,jay,18
2,jay,18
3,with,20
4,zrf,25

问题1:怎么用sql语句查询出重复的数据?
问题2:怎么用sql语句删除重复的数据?

首先,新建一个名为“homework1”的表
在这里插入图片描述
然后双击表“homework1”,填入数据
在这里插入图片描述
点击“新建查询”,针对问题1,选中以下代码并执行

select name,age from homework1 group by name,age having count(*) >=2

在这里插入图片描述
此时问题1解决。

针对问题2
代码思路是:
第一步:查询出要保留的数据

select min(id) from homework1 group by name,age

第二步:删除不要保留的数据
注意不要写成:

delete from homework1 where id not in(select min(id) from homework1 group by name,age)

因为不允许在查询表数据的同时去删除或者更改该表的数据,这是sql语言的硬性规定。
可以把查询的结果单独地放在一个结果集里,然后通过查询这个结果集,删除表里的数据:

delete from homework1 where id not in(select id from (select min(id) as id from homework1 group by name,age) h)

以上代码就是第二问的正确答案。
在这里插入图片描述
重新打开“homework1”,发现id为2的那一行被删除了:
在这里插入图片描述
此时问题2解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值