当前位置:   article > 正文

sql查询重复数据

sql查询重复数据

样例:有一个书籍表 t_book , 查询 表中重复的书籍数据
在这里插入图片描述

方式1 使用分组(group by having)

先使用 group by 对数据分组,再使用 having 统计出分组中计数大于 1 的分组,此分组中的数据即为重复的数据

SELECT `name`,price,author,sales,stock,img_path FROM t_book 
GROUP BY `name`,price,author,sales,stock,img_path
HAVING COUNT(1) > 1
  • 1
  • 2
  • 3

方式2 使用 join 内连接

使用 join 将一个表自己与自己相连接,连接条件on 是除id外,a表的字段数据和b表的字段数据全部相等,再使用where 筛选不满足条件是数据 a.id != b.id
最后使用 DISTINCT 过滤重复数据,的到的就是重复的数据
(如果表中不存在重复数据那 on的连接条件只会使相同的数据本身自连接,再经过where条件,查询出来的一定是空值)

SELECT DISTINCT b1.`name`,b1.price,b1.author,b1.sales,b1.stock,b1.img_path 
from t_book b1 JOIN t_book b2 on 
b1.`name` = b2.`name` and b1.price = b2.price and 
b1.author = b2.author and  b1.sales = b2.sales and 
b1.stock = b2.stock and b1.img_path = b2.img_path 
WHERE b1.id != b2.id
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

方式3 使用where (将join的连接改为 where 的方式)

SELECT DISTINCT b1.`name`,b1.price,b1.author,b1.sales,b1.stock,b1.img_path
from t_book b1,t_book b2 
WHERE b1.`name` = b2.`name` and b1.price = b2.price 
and b1.author = b2.author and  b1.sales = b2.sales 
and b1.stock = b2.stock and b1.img_path = b2.img_path 
and b1.id != b2.id
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/524703
推荐阅读
相关标签
  

闽ICP备14008679号