我有一个数据库,人们通过命令发送信息并将其存储在数据库中。同一个人每天可以有许多报告,下一个查询只显示最新的报告:
SELECT
r1.id,
r1.nickname,
r1.fecha,
r1.bestia1,
r1.bestia2,
r1.bestia3,
r1.bestia4,
r1.bestia5
FROM
reporte AS r1
INNER JOIN
( SELECT
nickname,
MAX(fecha) AS max_date
FROM
reporte
GROUP BY
nickname ) AS latests_reports ON latests_reports.nickname = r1.nickname AND latests_reports.max_date = r1.fecha
ORDER BY
r1.fecha DESC
但是现在我想删除除上次查询返回的记录之外的所有记录,我该怎么做呢?
2条答案
按热度按时间pw136qt21#
理想情况下,您可以将此作为一组步骤来完成,但也可以通过以下步骤来完成:
您需要在那里使用a.id查询,否则mysql会抱怨它不能更新reporte表
作为单独的步骤:
n6lpvg4x2#
编辑:我已从更新了查询
EXITS()
至NOT EXISTS()
您想删除除查询中列出的记录以外的所有记录。这是您的问题: