使用其他列值更新列

时间:2015-07-31 15:01:09

标签: mysql

我有3列名为idfirstTimelastTime。每个id多次出现在表中。我想为每个ID找到lastTime的最小值,并更新属于firstTime的所有行的id列。

我得到每个id的最小lastTime值,但我无法写入更新firstTime列。如何更新每个ID的行?

SELECT DISTINCT id,MIN(lastTime)
FROM logs
GROUP BY id

行看起来像这样:

   id  firstTime  lastTime
   A1   NULL      2015-07-10 11:29:00
   A1   NULL      2015-07-10 20:21:00
   B2   NULL      2015-07-10 11:29:00

2 个答案:

答案 0 :(得分:1)

我相信这对你有用:

UPDATE logs l1
INNER JOIN (
    SELECT l.id
        ,MIN(l.lastTime) AS ltime
    FROM logs l
    GROUP BY l.id
    ) t ON l1.id = t.id

SET l1.firstTime = t.ltime;

SQL Fiddle Demo

答案 1 :(得分:-1)

UPDATE logs logs1
   SET firstTime = (SELECT MIN(lastTime)
                      FROM logs logs2
                     WHERE logs2.id = logs1.id)