尝试运行此SQL查询,但我收到上述错误:
TimestampCombiner
DELETE FROM db_session
where time NOT IN (SELECT MAX(time) FROM db_session GROUP BY username)
功能虽然按预期工作。
答案 0 :(得分:5)
导致此问题的唯一数据库(据我所知)是MySQL(及相关数据库)。您可以使用JOIN
:
delete s
from db_session s join
(select username, max(time) as maxtime
from db_session s2
group by username
) ss
on s.username = ss.username and s.time < ss.maxtime;
额外的好处是逻辑也是正确的。您的逻辑会删除时间不是任何 username
的最长时间的所有行。但是,如果不同的行恰好是某些其他用户的最长时间,那么它可以为用户名保留多行。