根据外键 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.From
或 B.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];
我有一个问题,我有一个 table A,它有一个指向 table B 的外键,两个 table 都包含一个 From
和一个 createdAt
列,均为 datetime
.
我想将 table A 中的 From
列更新为 A.From
或 B.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];