инструкция обновления с помощью вложенного запроса

У меня есть таблица:

mytable:
    id
    userID
    logDate
    lastLogDate

Для каждой строки в этой таблице я хочу обновить столбец "lastLogDate", чтобы быть максимальным значением logDate для каждого пользователя...

Понятно, что каждый пользователь должен иметь lastLogDate = значение, которое возвращается:

select max(logDate) from mytable group by userID

Может кто-нибудь помочь мне написать выражение об обновлении для этого?

Ответ 1

Что-то вроде этого?

UPDATE mytable SET lastLogDate = t.maxDateForUser  
FROM  
(  
    SELECT userid, MAX(logDate) as maxDateForUser  
    FROM mytable  
    GROUP BY userId  
) t  
WHERE mytable.userid = t.userid

Ответ 2

Вы можете сделать это:

UPDATE t
SET t.logDate = t2.LatestDate
FROM YourTable t
INNER JOIN
(
    SELECT userID, MAX(LogDate) LatestDate
    FROM YourTable
    GROUP BY userID
) t2 ON t.userID = t2.userID; 

Ответ 3

Я не знаю, правильно ли я тебя понял. В противном случае будет немного более конкретным, но из того, что я получаю, вы должны сделать что-то вроде:

UPDATE 'mytable'
SET lastLogDate = (SELECT statement goes here)
WHERE ...

Ответ 4

Следующее выражение об обновлении должно делать то, что вы ищете

update mytable mt set  lastLogDate  = (select max(logDate) from  mytable where userID = mt.userID)

Ответ 5

UPDATE mytable mT,
  (SELECT userid,
          MAX(logDate) AS maxDateForUser
   FROM mytable
   GROUP BY userId) t
SET mT.lastLogDate = t.maxDateForUser
WHERE mT.userid = t.userid;

Ответ 6

Вы можете просто написать вложенный запрос, как этот


    Update  mytable a 
    set 
    a.lastLogDate = (select max(logDate) from mytable b
    where a.id=b.id)
    Where...;