【问题标题】:Select query to show duplicates with max date选择查询以显示具有最大日期的重复项
【发布时间】:2016-01-04 03:06:30
【问题描述】:

我已经研究过这个问题,但我仍在努力编写一个有效的查询。非常感谢任何帮助。

表格

+----------+-------------+
| username | signup_date |
+----------+-------------+
| user1    | 2010-01-15  |
| user1    | 2010-02-15  |
| user2    | 2010-03-15  |
| user3    | 2010-04-15  |
| user3    | 2010-05-15  |
| user4    | 2010-06-15  |
| user5    | 2010-07-15  |
| user6    | 2010-08-15  |
| user6    | 2010-09-15  |
| user6    | 2010-10-15  |
+----------+-------------+

我想编写一个查询,只返回重复的用户名值和最近的注册日期。

期望的结果

+----------+-------------+
| username | signup_date |
+----------+-------------+
| user1    | 2010-02-15  |
| user3    | 2010-05-15  |
| user6    | 2010-10-15  |
+----------+-------------+

到目前为止,我有这个,但它没有过滤到 signup_date 的最大值。相反,它会返回每个重复的行。

SELECT users.username, users.signup_date
FROM users 
INNER JOIN (SELECT username FROM users
GROUP BY username HAVING count(id) > 1) dup ON users.username = dup.username;

【问题讨论】:

    标签: mysql select duplicates max


    【解决方案1】:

    这只是一个聚合(不需要连接):

    select u.username, max(u.signup_date)
    from users u
    group by u.username
    having count(*) > 1;
    

    【讨论】:

    • 谢谢!!正是我想要的。认为答案可能很简单。如此迅速地得到回复真是太棒了。
    【解决方案2】:

    试试这个:

    SELECT username, MAX(signup_date)
    FROM users
    GROUP BY username
    HAVING COUNT(username) > 1
    

    【讨论】:

      猜你喜欢
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      相关资源
      最近更新 更多