【发布时间】:2014-05-12 01:30:03
【问题描述】:
我想从表中获取数据,但只选择最新的或最大的CreateDate
这是我的查询:
select Username, Password,Status,FirstLogin,CreateDate,UpdateDate,MasterID,FullName,Address,tm.Email,TempEmail,VerificationCode,PhoneNo,TempPhonoNo,TempPassword,LastSignIn,TempAccount,bod,ktp,Gender,CustType,VIP from UserData t
inner join (
select Email, max(CreateDate) as MaxDate
from userdata
group by Email
) tm on t.Email = tm.Email and t.CreateDate = tm.MaxDate
但不幸的是,我只收到同一封电子邮件的多个结果,我只想获得一封具有最大创建日期的电子邮件:
这是完全相同的创建日期:
CreateDate FullName Email
2012-08-14 16:37:16.900 Mrs a yyyyy@yyy.com
2012-08-14 16:37:16.900 mrs a yyyy@yyyy.com
这里有不同的创建日期:
2012-11-24 20:34:44.930 0 zzzzz zzzzz@zzz.com
2012-11-16 08:13:45.217 0 zzzz zzzz@zzzz.com
但我只想得到这样的结果:
CreateDate FullName Email
2012-08-14 16:37:16.900 Mrs a yyyyy@yyy.com
2012-11-24 20:34:44.930 0 zzzzz zzzzz@zzz.com
【问题讨论】:
-
在您的两个示例中,每封电子邮件仅得到一个结果(电子邮件中的 ys 和 zs 数量不同)——这是一个错误吗?
-
不,我的意思是我给了一个样本,第一个我只想得到一个电子邮件结果,第二个我只想得到 2012 年 11 月 24 日的结果,但我的查询显示多个这样的结果
-
尝试为内部关节部分选择不同的数据。如果不使用 select TOP 1 仅返回第一行?但是,根据您的示例,我看到的是 2 封不同的电子邮件。这不是你想要的吗?
-
@Sky 我尝试了不同但给出相同的结果
-
我更新问题以使其清楚
标签: sql sql-server date get max