所以我们遇到了一个问题,即整个表格是独一无二的" CRC"设置为" N / A"幸运的是我们有另一个表存储了多个版本的" CRC"如果我们使用它,我们应该能够撤回原来的" CRC" s
我的基本概念是
UPDATE Table1
SET Table1.CRC = History.CRC
FROM Table1 JOIN History ON Table1.PhoneNum = History.PhoneNum
where Table1.field2 = 'Uniquefield2 here'
问题在于我不知道CRC被拉了什么
我想根据列" calldatetime"拉出最新的History.crc。 并使用此值
更新Table1.CRC上面的查询来源 Update table based on all values in another table as parameters
答案 0 :(得分:2)
如果您有ID字段,则可以搜索最大ID,并仅返回ID最高的行,并在您希望的字段上分组。
我在这里使用了内联视图,以获得ID
的最大PhoneNum
个:
update Table1
SET Table1.CRC = History.CRC
FROM Table1
JOIN History
ON Table1.PhoneNum = History.PhoneNum
JOIN ( select PhoneNum
, max(id) id
from history
group
by PhoneNum
)
History_MAX
on History.ID = History_MAX.id
where Table1.field2 = 'Uniquefield2 here'
答案 1 :(得分:1)
您可以通过添加calldatetime
表中不存在以后History
的记录的条件来修复您的查询:
UPDATE Table1
SET Table1.CRC = History.CRC
FROM Table1 JOIN History h ON Table1.PhoneNum = History.PhoneNum
WHERE Table1.field2 = 'Uniquefield2 here'
AND NOT EXISTS (
SELECT * FROM History hh
WHERE hh.PhoneNum=h.PhoneNum AND hh.calldatetime > h.calldatetime
)
此查询从查询中向h
表添加别名History
,并要求calldatetime
表达式内的协调子查询中不存在后来EXISTS
的记录