Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 表“db_session”指定了两次,既作为“DELETE”的目标,也作为单独的数据源_Sql_Mariadb_Innodb - Fatal编程技术网

Sql 表“db_session”指定了两次,既作为“DELETE”的目标,也作为单独的数据源

Sql 表“db_session”指定了两次,既作为“DELETE”的目标,也作为单独的数据源,sql,mariadb,innodb,Sql,Mariadb,Innodb,正在尝试运行此sql查询,但出现上述错误: DELETE FROM db_session where time NOT IN (SELECT MAX(time) FROM db_session GROUP BY username) 尽管SELECT function按预期工作。据我所知,导致此问题的唯一数据库是MySQL和相关数据库。您可以使用联接替换逻辑: 另外一个好处是,逻辑也是正确的。逻辑删除时间不是任何用户名的最大时间的任何行。但是,如果一个用户名可以保留多行,而不同的行恰好是其他用户

正在尝试运行此sql查询,但出现上述错误:

DELETE FROM db_session
where time NOT IN (SELECT MAX(time) FROM db_session GROUP BY username)

尽管SELECT function按预期工作。

据我所知,导致此问题的唯一数据库是MySQL和相关数据库。您可以使用联接替换逻辑:


另外一个好处是,逻辑也是正确的。逻辑删除时间不是任何用户名的最大时间的任何行。但是,如果一个用户名可以保留多行,而不同的行恰好是其他用户的最长时间。

据我所知,导致此问题的唯一数据库是MySQL和相关数据库。您可以使用联接替换逻辑:


另外一个好处是,逻辑也是正确的。逻辑删除时间不是任何用户名的最大时间的任何行。但是,如果不同的行恰好是其他用户的最长时间,则它可以为用户名保留多行。

使用您正在使用的数据库标记您的问题。使用您正在使用的数据库标记您的问题。这将返回并删除表中的所有行,我想拥有所有唯一的用户名行以及每个行的最大时间。例如,如果有三行user1和两行user2,我想保留一行user1的最大时间和一行user2的最大时间。@NickKapenkar。这不应该删除表中的所有行。s.timedelete 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;