Ответ 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
У меня есть таблица:
mytable:
id
userID
logDate
lastLogDate
Для каждой строки в этой таблице я хочу обновить столбец "lastLogDate", чтобы быть максимальным значением logDate для каждого пользователя...
Понятно, что каждый пользователь должен иметь lastLogDate = значение, которое возвращается:
select max(logDate) from mytable group by userID
Может кто-нибудь помочь мне написать выражение об обновлении для этого?
Что-то вроде этого?
UPDATE mytable SET lastLogDate = t.maxDateForUser
FROM
(
SELECT userid, MAX(logDate) as maxDateForUser
FROM mytable
GROUP BY userId
) t
WHERE mytable.userid = t.userid
Вы можете сделать это:
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;
Я не знаю, правильно ли я тебя понял. В противном случае будет немного более конкретным, но из того, что я получаю, вы должны сделать что-то вроде:
UPDATE 'mytable'
SET lastLogDate = (SELECT statement goes here)
WHERE ...
Следующее выражение об обновлении должно делать то, что вы ищете
update mytable mt set lastLogDate = (select max(logDate) from mytable where userID = mt.userID)
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;
Вы можете просто написать вложенный запрос, как этот
Update mytable a
set
a.lastLogDate = (select max(logDate) from mytable b
where a.id=b.id)
Where...;