好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
在一个SQL表中查找重复值 关闭 返回上一级  

在一个SQL表中查找重复值
+ 查看更多

发布日期:2018-02-24 16:50
分类:SQL
浏览次数:75
很容易找到带有一个字段的重复项:
SELECT name, COUNT(email) 
FROM users
GROUP BY email
HAVING ( COUNT(email) > 1 )
所以如果我们有一个表
ID   NAME   EMAIL
1    John   asd@asd.com
2    Sam    asd@asd.com
3    Tom    asd@asd.com
4    Bob    bob@asd.com
5    Tom    asd@asd.com
这个查询将给我们约翰,山姆,汤姆,汤姆,因为他们都有相同的电子邮件
但是,我想要的是获得重复的相同的电子邮件和名字。
也就是说,我想得到“汤姆”,“汤姆”。
我需要这个的原因:我犯了一个错误,并允许插入重复的名称和电子邮件值。现在我需要删除/更改重复,所以我需要先找到他们。

回答

SELECT
    name, email, COUNT(*)
FROM
    users
GROUP BY
    name, email
HAVING 
    COUNT(*) > 1
只需在两个列上分组。
注意:ANSI标准是在GROUP BY中具有所有非聚合列。
MySQL允许你避免这一点,但结果是不可预测的:
GROUP BY lname ORDER BY显示错误的结果
这是在没有ANY()的情况下最便宜的聚合函数(参见接受答案中的注释)
上一篇如何在MySQL中使用命令行导入SQL文件
参数化SQL IN子句下一篇
下一篇参数化SQL IN子句

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号