sql - 如何编写此查询?

标签 sql sql-server-2008

我有一个包含用户的表......一些用户以某种方式加倍(有多个记录)。我想通过电子邮件地址清楚地提取每个用户记录,对于拥有多个记录的用户,我只想提取登录次数最多的记录。

--USERS----------------------------
ID EMAIL           TOTAL_LOGINS
1  blah@blah.com   3
2  blah@blah.com   1
3  bloop@blah.com  1
4  bloop@blah.com  45
5  blarp@blah.com  6
6  flag@blah.com   2

我希望查询返回的是:

ID EMAIL           TOTAL_LOGINS
1  blah@blah.com   3
4  bloop@blah.com  45
5  blarp@blah.com  6
6  flag@blah.com   2

有人可以帮我解决这个问题吗?

谢谢!

最佳答案

SELECT    EMAIL, MAX(TOTAL_LOGINS)
FROM      USERS
GROUP BY  EMAIL

编辑:

这将在 MS SQL 中执行您想要的操作。

SELECT    * -- Bad practice. I'm just showing that you can select anything.
FROM      USERS
WHERE     ID = (SELECT    TOP 1 ID
                FROM      USERS u
                WHERE     u.EMAIL = USERS.EMAIL
                ORDER BY  TOTAL_LOGINS DESC)

关于sql - 如何编写此查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5597137/

相关文章:

mysql - SELECT MAX from COUNT,其他行变量不正确

sql-server-2008 - SQL Server 2008 SYSDATETIME 返回错误的日期

SQL 返回表的前两列

sql - 包含特殊字符的 XML 路径表达式

vb.net - ADO.Net 表值参数 (TVP) - 操作数类型冲突 : datetime2 is incompatible with int

sql - SQL Server 中 INNER 联接和笛卡尔联接的区别

sql - ORACLE 9i PLSQL 优化器导致常量变量出现一些性能问题

java - 使用触发器生成 ID 与手动创建 ID

php - MySQL 从一列中选择所有数据

mysql - 我应该为此查询使用 MySQL 过程吗?