SQL – SELECT MAX()和附带字段
|
我所拥有的基本上是一个容易用多个表解决的问题,但我只有一个表来完成它. 请考虑以下数据库表 UserID UserName EmailAddress Source 3K3S9 Ben ben@myisp.com user SF13F Harry lharry_x@hotbail.com 3rd_party SF13F Harry reside@domain.com user 76DSA Lisa cake@insider.com user OL39F Nick stick@whatever.com 3rd_party 8F66S Stan myman@lol.com user 我需要选择所有字段,但只需要每个用户一次以及其中一个电子邮件地址(由MAX()函数确定的“最大”字段).这是我追求的结果…… UserID UserName EmailAddress Source 3K3S9 Ben ben@myisp.com user SF13F Harry lharry_x@hotbail.com 3rd_party 76DSA Lisa cake@insider.com user OL39F Nick stick@whatever.com 3rd_party 8F66S Stan myman@lol.com user 正如你所看到的,“Harry”只用他的“最高”电子邮件地址显示一次相应的“来源” 目前正在发生的事情是我们正在对UserID,UserName进行分组,并使用MAX()作为EmailAddress和Source,但这两个字段的最大值并不总是匹配,它们需要来自同一记录. 我已经通过加入表自己尝试了另一个进程,但我只是设法获得正确的电子邮件地址,但没有获得该地址的相应“源”. 任何帮助将不胜感激,因为我已经花了太长时间试图解决这个问题:) 解决方法如果您使用的是SQL Server 2005或更高版本,SELECT UserID,UserName,EmailAddress,Source
FROM (SELECT UserID,Source,ROW_NUMBER() OVER (PARTITION BY UserID
ORDER BY EmailAddress DESC)
AS RowNumber
FROM MyTable) AS a
WHERE a.RowNumber = 1
当然,有一些方法可以在没有(SQL-Standard)排名函数的情况下执行相同的任务,例如ROW_NUMBER,SQL Server自2005年以来仅实现了这一功能 – 包括嵌套的依赖查询和带有ON的自左连接,包括’>’和一个WHERE … IS NULL技巧 – 但排名函数使得SQL Server引擎可以读取并且(理论上)可以很好地优化代码. 编辑:this article是一个很好的排名教程,但它在示例中使用RANK而不是ROW_NUMBER(或其他排名函数,DENSE_RANK) – 当同一分区中的分组行之间存在“联系”时,区别很重要订购标准. this post很好地解释了差异. (编辑:百科站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – 当包装在TVF中时,查询变得非常慢
- sql-server – 如何阻止SQL Server将信息行记录到SQLFT日志
- 具有现有数据库和自定义文件路径的Android Sugar ORM
- sql-server – 在Excel中的VBA中从SQL Server捕获错误消息
- sql – 优化BETWEEN日期语句
- 如果我们在sql-server中启用read committed snapshot会有什
- sql-server – ISO Week vs SQL Server Week
- Sql Server 视图数据的增删改查方法
- 为什么我得到“数据映射错误的[SQL0802]数据转换”异常?
- sql-server – 将结果限制为前2个排名行
- 关于html的表单元素详解(二)
- sql – oracle中Like vs Contains()之间的搜索条
- sql – 如何重用SELECT,WHERE和ORDER BY子句的结
- sql-server-2008 – 查看SQL Server代理历史记录
- dns-prefetch是什么 前端优化:DNS预解析提升页面
- sql-server-2005 – 从SQL Server 2008降级到200
- sql-server – 使用T-SQL测试字符串是否为回文结
- sql-server – 为什么SQL Server 2008在简单的SQ
- SQL中exists的使用说明
- sql-server – SQL Server – LIKE运算符的基数估

