现在有一个表:
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解决。