【发布时间】:2019-09-23 16:31:39
【问题描述】:
我创建了一个查询来删除 MariaDB 中的一些记录
查询:
DELETE
FROM
HrAttLogsFormatted
WHERE
DateIn = '2019-04-10'
AND Late != ''
AND ( FingerId, CreatedDate ) IN (
SELECT
FingerId,
MAX( CreatedDate )
FROM
HrAttLogsFormatted
WHERE
DateIn = '2019-04-10'
AND Late != ''
AND FingerId IN ( SELECT FingerId FROM HrAttLogsFormatted WHERE DateIn = '2019-04-10' AND Late != '' GROUP BY FingerId HAVING COUNT( FingerId ) > 1 )
GROUP BY
FingerId
)
结果:
表“HrAttLogsFormatted”被指定了两次,都作为 'DELETE' 并作为单独的数据源
但是我的查询不成功,有没有办法解决呢?
提前谢谢你
[EDIT-SOLVED] 只需应用和查询即可解决
DELETE t1
FROM HrAttLogsFormatted t1
INNER JOIN
(
SELECT FingerId, MinCreatedDate
FROM
(
SELECT FingerId, MIN(CreatedDate) AS MinCreatedDate
FROM HrAttLogsFormatted
WHERE DateIn = '2019-05-03' AND Late != ''
GROUP BY FingerId HAVING COUNT(FingerId) > 1
) x
) t2
ON t1.FingerId = t2.FingerId AND t1.CreatedDate = t2.MinCreatedDate;
【问题讨论】:
-
我现在可以给你一个解决方法,但我想请你清楚地告诉我们这里发生的逻辑。我的猜测是我们可以用更简单的方式重写您的查询。
-
好的,提前谢谢你。在这种情况下,我有相同的 2 个数据,其中第一个数据是在开头创建的,第二个数据是在最后创建的……从这两个数据中,我想删除最后创建此数据的第二个数据@TimBiegeleisen
标签: sql wordpress mariadb sql-delete mariadb-10.4