【发布时间】:2013-07-18 10:49:44
【问题描述】:
假设我们有一个名为 record 的表,其中包含 4 个字段
id (INT 11 AUTO_INC)
email (VAR 50)
timestamp (INT 11)
status (INT 1)
并且该表包含以下数据
现在我们可以看到电子邮件地址 test@xample.com 被重复了 4 次(时间戳最低的记录是原始记录,之后的所有副本都是重复的)。我可以使用
轻松计算唯一记录的数量SELECT COUNT(DISTINCT email) FROM record
我还可以轻松找出哪个电子邮件地址重复了多少次
SELECT email, count(id) FROM record GROUP BY email HAVING COUNT(id)>1
但现在的业务问题是
在所有重复记录中STATUS 有多少次是 1?
例如:
- 对于 test@example.com,没有状态为 1 的重复记录
- 对于 second@example.com,有 1 条状态为 1 的重复记录
- 对于 third@example.com,有 1 条状态为 1 的重复记录
- 对于four@example.com,没有状态为1 的重复记录
- 对于 Five@example.com,有 2 条重复记录的状态为 1
所以所有数字的总和是0 + 1 + 1 + 0 + 2 = 4
这意味着有 4 条重复记录,其中 status = 1 在表中
问题
有多少 Duplicate 记录的 status = 1 ?
【问题讨论】:
-
考虑提供一个 sqlfiddle(或者适当的 ddls)
-
关于您的答案 stackoverflow.com/a/18307508/285587 的临时评论 - () 上带有数组的这件事是不正确的,而您的答案在技术上是正确的。
-
@YourCommonSense 谢谢,我知道从 5.5 开始,
()概念可用于访问数组值,因此我删除了我的答案并赞成你的。再次感谢:) -
除了一条不可靠的评论之外,您有任何证据吗?
-
这是一个非常好的问题,而令人尴尬的答案是我认为该评论是有效的而没有做任何研究。似乎找不到任何关于我在那里被告知的内容
标签: mysql select duplicates