首页 > 其他 > 详细

利用聚合函数来去重

时间:2018-01-13 20:26:17      阅读:212      评论:0      收藏:0      [点我收藏+]
select * FROM `test` 
WHERE `name` in (
  select a.`name` from(
    SELECT `name` FROM `test` GROUP BY `name` HAVING COUNT(*) >1
  )a
)
and `id` not in (
  select b.`id` from(
    select min(`id`) as id from test group by `name` having count(*)>1
  )b
)

主要思路是IN和NOT IN,用IN来查出哪些是重复的,然后用NOT IN来保留一条;

每个子查询中通过HAVING函数来判断重复;

MySQL中不能在更新或删除表的同时去查询这个表,因此需要增加一个字表,否则会报错:

 You cant specify target table test for update in FROM clause

 

利用聚合函数来去重

原文:https://www.cnblogs.com/huqiaoblog/p/8280298.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!