更新查询获取最新记录SQL
Update query Get Latest record SQL
我有一个 tableA,其中有两个字段 Telephone,CallTime
还有另一个 TableB,它具有三个字段 Name、Telephone1 和 LastCallTime
每当 TableB 的 Telephone1 字段与 TableA 的 Telephone 字段匹配时,我想从 TableA CallTime 字段更新 TableB LastCallTime 字段。
但是有一个问题。
在表 A 中,同一电话有多个通话时间记录。
即
- 123-456-7891 | 2016-01-01 00:02
- 456-789-8651 | 2015-03-07 02:09
- 123-456-7891 | 2016-06-10 12:02
像这样,
所以每当我 运行 更新查询时,它都会用不是最新的记录更新记录。无论如何我可以用最新的 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
我有一个 tableA,其中有两个字段 Telephone,CallTime 还有另一个 TableB,它具有三个字段 Name、Telephone1 和 LastCallTime 每当 TableB 的 Telephone1 字段与 TableA 的 Telephone 字段匹配时,我想从 TableA CallTime 字段更新 TableB LastCallTime 字段。 但是有一个问题。 在表 A 中,同一电话有多个通话时间记录。 即
- 123-456-7891 | 2016-01-01 00:02
- 456-789-8651 | 2015-03-07 02:09
- 123-456-7891 | 2016-06-10 12:02
像这样, 所以每当我 运行 更新查询时,它都会用不是最新的记录更新记录。无论如何我可以用最新的 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