使用mysql更新父表中的最后一个子ID

时间:2010-03-08 01:43:45

标签: mysql

鉴于以下表格:

主题

id,last_updated_child_id

响应

id,topic_id,updated_at

如何更新主题表,以使last_updated_child_id等于最新响应ID(基于日期)。

所以举个例子:

 
Topic
id   last_updated_child_id
--   -----------------------
1    null
2    null
3    null

Response
id  topic_id  updated_at
--  ----      ----
1   1         2010
2   1         2012 
3   1         2011
4   2         2000

我想执行一个UPDATE语句,该语句将导致Topic表为:

 
id   last_updated_child_id
--   -----------------------
1    2
2    4
3    null 

注意:如果可能的话,我想避免使用临时表,并且很乐意使用MySQL特定的解决方案。

1 个答案:

答案 0 :(得分:1)

效率不高,但相对简单:

UPDATE topic
SET    last_id = (SELECT   id
                  FROM     response
                  WHERE    topic_id = topic.id
                  ORDER BY updated_at DESC
                  LIMIT    1);