根据外键 table 中的列更新 table 列

Update a table column depending on a column from the foreign key table

我有一个问题,我有一个 table A,它有一个指向 table B 的外键,两个 table 都包含一个 From 和一个 createdAt 列,均为 datetime.

类型

我想将 table A 中的 From 列更新为 A.FromB.CreatedAt,具体取决于哪一个更大。

我该如何处理这类问题?这只能使用游标来完成吗?

I want to update the From column in table A to be either the A.From or B.CreatedAt depending on which one is bigger.

如果 A.From 等于或大于 table 中相应的 CreatedAt 值,则无需更新 table A 中的 From 列B.

假设您的 table 看起来像:

DECLARE @TableA table
(
    ID integer NOT NULL PRIMARY KEY, 
    [From] datetime NOT NULL,
    CreatedAt datetime NOT NULL
);

DECLARE @TableB table
(
    ID integer NOT NULL PRIMARY KEY,
    A_ID integer NOT NULL, -- foreign key
    [From] datetime NOT NULL,
    CreatedAt datetime NOT NULL
);

您需要的更新格式为:

UPDATE TA
SET TA.[From] = TB.CreatedAt
FROM @TableA AS TA
JOIN @TableB AS TB
    ON TB.A_ID = TA.ID
WHERE
    TB.CreatedAt > TA.[From];