我有两个表,一个是Table_Log
,当用户更新数据时,它会将一个数据存储到Table_Log
,另一个表是主注册表:Table_Registration
和我基于updatedDate
Table_Log
RegId Name updatedDate
-----------------------------------
3 jj 2018-03-21 13:30:04.497
3 jj 2018-03-20 13:30:04.497
数据的需求应该由desc开始。
Table_Log:
RegId Name Email SubDate
--------------------------------------------------------
2 kk kk@gmail.com 2018-03-01 15:30:04.497
3 jj jj@gmail.com 2018-02-26 15:30:04.497
1 Raj raj@gmail.com 2018-02-30 13:30:04.497
Table_Registration
RegId Name Email SubDate
--------------------------------------------------------
3 jj jj@gmail.com 2018-02-26 15:30:04.497
2 kk kk@gmail.com 2018-03-01 15:30:04.497
1 Raj raj@gmail.com 2018-02-30 13:30:04.497
我需要这个输出作为我的结果:
select r.*
from Table_Registration r
left join Table_Log a
on a.RegId = r.RegId
order by isnull(a.updatedDate, r.SubDate) desc
我尝试了以下查询,但有些重复即将到来。
height:100%
答案 0 :(得分:0)
select r.*
from Table_Registration r
left join Table_Log a
on a.RegId = r.RegId
order by isnull(a.updatedDate, r.SubDate) desc
在上面的代码中,您将连接到表日志。这将为每行tablelog提供一行,这就是你获得重复的原因。您需要以某种方式处理table_Log,以便每次注册只获取最新的行,然后加入到该行。像这样的东西
select r.*
from Table_Registration r
left join (Select RegId, Max(updateDate) as updateDate from Table_Log Group By RegId) a
on a.RegId = r.RegId
order by isnull(a.updatedDate, r.SubDate) desc