更新查询获取最新记录SQL

Update query Get Latest record SQL

我有一个 tableA,其中有两个字段 Telephone,CallTime 还有另一个 TableB,它具有三个字段 Name、Telephone1 和 LastCallTime 每当 TableB 的 Telephone1 字段与 TableA 的 Telephone 字段匹配时,我想从 TableA CallTime 字段更新 TableB LastCallTime 字段。 但是有一个问题。 在表 A 中,同一电话有多个通话时间记录。 即

像这样, 所以每当我 运行 更新查询时,它都会用不是最新的记录更新记录。无论如何我可以用最新的 calltime.For 示例更新 table 上面示例中的最后一条记录是最新的。

UPDATE TableA 
SET LastCallTime = TableB.CallTime 

FROM TableB 
WHERE 
    TableA.Telephone = TableB.Telephone1

您可以在 UPDATE 语句中使用子查询并使用 TOP 获取最新的 CallTime:

UPDATE b
    SET b.LastCallTime = (
        SELECT TOP 1 CallTime 
        FROM TableA a 
        WHERE a.Telephone = b.Telephone 
        ORDER BY a.CallTime DESC
    )
FROM TableB b

您可以使用 join 和聚合来做到这一点:

update b
     set lastCallTime = a.callTime
     from tableB b join
          (select telephone, max(callTime) as callTime
           from tablea a
           group by telephone
          ) a
          on b.telephone = a.telephone;

试试这个

Update TABLEB B
set B.lastcalltime= A.calltime
(
select 
    telephone,
    calltime,
     from ( select 
                telephone,
                calltime,
                ROW_NUMBER() OVER(Order by calltime desc) rnum
                from
                TABLEA )
                where rnum=1
            ) A
where B.telephone1=A.telephone