Table 'db_session' 被指定了两次,既作为 'DELETE' 的目标又作为单独的数据源
Table 'db_session' is specified twice, both as a target for 'DELETE' and as a separate source for data
正在尝试 运行 这个 sql 查询,但我收到上面的错误:
DELETE FROM db_session
where time NOT IN (SELECT MAX(time) FROM db_session GROUP BY username)
SELECT
功能虽然按预期工作。
导致此问题的唯一数据库(据我所知)是 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;
一个额外的好处是逻辑也正确。您的逻辑会删除时间不是 any username
的最长时间的所有行。但是,如果不同的行恰好是某些 other 用户的最长时间,它可以为用户名保留多行。
正在尝试 运行 这个 sql 查询,但我收到上面的错误:
DELETE FROM db_session
where time NOT IN (SELECT MAX(time) FROM db_session GROUP BY username)
SELECT
功能虽然按预期工作。
导致此问题的唯一数据库(据我所知)是 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;
一个额外的好处是逻辑也正确。您的逻辑会删除时间不是 any username
的最长时间的所有行。但是,如果不同的行恰好是某些 other 用户的最长时间,它可以为用户名保留多行。