使用以下查询,我可以返回我需要的结果。
SELECT t1.*
FROM lms_attendance t1
WHERE t1.id = (SELECT t2.id
FROM lms_attendance t2
WHERE t2.user = t1.user
ORDER BY t2.id DESC
LIMIT 1)
但是,当尝试执行DELETE时,这不起作用。通过反复试验,我得到unknown column
或can't specify target updated in from clause
。这里的主要问题是我必须拥有WHERE子句,以便它返回每个用户的最大id,而不是整个表。
答案 0 :(得分:0)
请尝试以下查询。在运行删除之前,请先运行一个选择以确认它是否是正确的记录。如果您也保留备份表,那就更好了。
运行选择:
SELECT t1.* FROM lms_attendance t1
LEFT JOIN (SELECT user, MAX(id) id
FROM lms_attendance
GROUP BY user) t2
ON t1.id = t2.id
WHERE t2.id IS NULL
如果看起来不错;
DELETE t1.* FROM lms_attendance t1
LEFT JOIN (SELECT user, MAX(id) id
FROM lms_attendance
GROUP BY user) t2
ON t1.id = t2.id
WHERE t2.id IS NULL