来自另一个表

时间:2016-05-19 02:01:03

标签: mysql mysql-workbench

我一直在试图实施解决方案,我发现我认为这是一个简单的查询。

SETUP:

表1:UID,Field1,TimeStamp

表2:UID,fk_table1UID,Field1,TimeStamp

表1有一个on before update触发器,它将整个OLD行插入表2中。(有效保留表1的更改日志)

表2还有fk_table1UID到table1.UID的Foriegn键约束

问题:

我想要做的就是构建一个

的查询

(伪代码) update table1.Field1 WHERE UID = X(用户输入) 同 table2.Field1 WHERE table2.TimeStamp = max(table2.TimeStamp)AND table2.fk_table2UID = table1.UID

我尝试过使用内部联接进行更新的不同尝试,但我遇到了一个问题,即我无法引用已调用的表或其他内容。 (我相信与我的触发器有关。)

问题:

如何在一次通话查询中解决此问题?

2 个答案:

答案 0 :(得分:0)

试试这个:

UPDATE table1
       SET table1.Field1 = (SELECT table2.Field1 FROM table2 WHERE table2.UIDfk = X ORDER BY table2.TimeStamp DESC LIMIT 1)
WHERE table1.UID = X

答案 1 :(得分:0)

加入一个返回所需值的子查询。

UPDATE table1 AS t1
JOIN (SELECT Field1 FROM table2
      WHERE fk_table1UID = @X
      ORDER BY TimeStamp DESC
      LIMIT 1) AS t2
SET t1.Field1 = t2.Field1
WHERE UID = @X