Sql 使用另一个表中的记录更新表
我试图根据一个条件用表2中的一些字段值更新表1。但是我无法得到正确的查询。条件如下: 我有一个带有日期字段的表1,它应该从表2的日期字段更新。条件是表1的id应等于表2的id(表2的id为FK)。另一个条件应该是表2中有一个varchar字段,它应该有特定的值,比如“Test”。如果表2中字段的值为“Test”,我想用表1日期字段中的记录更新日期。但还有一个陷阱。表2中相同id的多个记录可能具有“Test”值 我正在尝试以下查询:Sql 使用另一个表中的记录更新表,sql,join,sql-update,Sql,Join,Sql Update,我试图根据一个条件用表2中的一些字段值更新表1。但是我无法得到正确的查询。条件如下: 我有一个带有日期字段的表1,它应该从表2的日期字段更新。条件是表1的id应等于表2的id(表2的id为FK)。另一个条件应该是表2中有一个varchar字段,它应该有特定的值,比如“Test”。如果表2中字段的值为“Test”,我想用表1日期字段中的记录更新日期。但还有一个陷阱。表2中相同id的多个记录可能具有“Test”值 我正在尝试以下查询: UPDATE A SET A.Date = Max(B.[Dat
UPDATE A
SET A.Date = Max(B.[Date])
FROM Table1 A
INNER JOIN Table2 B ON A.ID = B.FK_ID
WHERE (B.Changed LIKE 'Test')
AND A.Date IS NULL
但这不起作用,因为当没有分组依据时,sql不允许更新
Max
。请帮忙。有点紧急。您可以随时使用子查询:
UPDATE Table1 a SET
[Date] = (SELECT MAX([Date]) FROM Table2 b WHERE a.ID = b.FK_ID AND b.Changed LIKE 'Test')
WHERE [Date] IS NULL
您需要创建另一个内部联接,其中Table1的ID与Table2的最大日期耦合,如下所示:
UPDATE Table1
SET Date = BDate.MaxDate
FROM Table1 A
INNER JOIN Table2 B ON A.ID = b.FK_ID
INNER JOIN (
SELECT A.ID, [MaxDate] = MAX(B.Date)
FROM Table1 A
INNER JOIN Table2 B ON A.ID = b.FK_ID
GROUP BY A.ID
) BDate ON BDate.ID = A.ID
WHERE B.Changed LIKE 'Test'
A.Date IS NULL
我的第一个冲动是将其编辑为等于,但后来我发现
Test
显然是一个虚构的示例值,所以我猜它可以被理解为,在这个实时实现中,它实际上会有其他东西,从那里开始,我只是假设Ted知道像这样的和=
之间的区别,并决定不挑这个问题,因为这是一个非常容易回答的问题=)酷香蕉,想确保我没有错过一个随机的语法变化