SQL Server查询两个表的左连接

时间:2018-03-27 04:34:09

标签: sql-server-2008

我有两个表,一个是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%

1 个答案:

答案 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
相关问题