我有以下表(table1)结构作为选择案例查询的结果
server timestamp ftpSuccRate httpSuccRate
123.2.3.2 1:00 am 1 null
123.2.3.2 1:00 am null 0.5
我想用table1
中的值更新另一个具有以下结构的表(表2)server timestamp ftpSuccRate httpSuccRate
123.2.3.2 1:00 am 1 0.5
基本上我想用table1的非null ftpSuccRate值更新table2的ftpsuccrate。对于httpSuccRate也是如此。 table1和table2之间的连接标准是server和tiemstamp
答案 0 :(得分:0)
UPDATE table2
SET table2.ftpSuccRate = CASE
WHEN table1.ftpSuccRat IS NULL TEHN
table2.ftpSuccRate
ELSE
table1.ftpSuccRat
END.
table2.httpSuccRate = CASE
WHEN table1.httpSuccRate IS NULL TEHN
table2.httpSuccRate
ELSE
table1.httpSuccRate
END
FROM (your case select here) AS table1
WHERE table2.server = table1.server AND table2.timestamp = table1.timestamp
答案 1 :(得分:0)
您将需要表1中的某种唯一ID字段,该字段也在表2中(作为表1的FK),以确保您可以准确地映射数据。不幸的是,仅仅使用IP地址和/或时间戳是不够的,因为数据不够“足够独特”以防止发现和执行多个匹配(因此,多个更新)。
时间戳不是唯一标识两个表之间匹配的好方法 - 这就是SQL为我们提供PK和FK的原因,所以我们可以。