我做了一个删除查询来删除 tbljournaalposten 中字段 volgr 多次出现的所有记录。
delete from tbljournaalposten
where tbljournaalposten.ID in(
SELECT
tbljournaalposten.ID
FROM
invoerdatum
INNER JOIN
rabobank2_2 ON rabobank2_2.IBAN_BBAN = invoerdatum.IBAN_BBAN
INNER JOIN
tbljournaalposten ON rabobank2_2.Volgnr = tbljournaalposten.Volgnr
WHERE
rabobank2_2.invoerdatum = invoerdatum.invoerdatum
GROUP BY tbljournaalposten.volgnr
HAVING tbljournaalposten.volgnr >1
ORDER BY
rabobank2_2.Datum DESC )
当我在 phpmyadmin 中尝试代码时,似乎没有发生任何事情。加载时间很长。但 5 分钟后查询停止。当我查看表时,volgnr > 1 的记录被删除。 当我只尝试这个代码时,它运行良好且直接。
SELECT
tbljournaalposten.ID
FROM
invoerdatum
INNER JOIN
rabobank2_2 ON rabobank2_2.IBAN_BBAN = invoerdatum.IBAN_BBAN
INNER JOIN
tbljournaalposten ON rabobank2_2.Volgnr = tbljournaalposten.Volgnr
WHERE
rabobank2_2.invoerdatum = invoerdatum.invoerdatum
GROUP BY tbljournaalposten.volgnr
HAVING tbljournaalposten.volgnr >1
ORDER BY
rabobank2_2.Datum DESC
我尝试了好几次。我预计 volgr >1 的记录会被删除。
此查询可能会删除您不想要的那些行,因此只需确保不会丢失
tbljournaalposten
中的数据,(创建表的副本或类似内容)。
我想你需要这样的东西:
delete from tbljournaalposten
where tbljournaalposten.volgnr in(
SELECT
tbljournaalposten.volgnr
FROM
invoerdatum
INNER JOIN
rabobank2_2 ON rabobank2_2.IBAN_BBAN = invoerdatum.IBAN_BBAN
INNER JOIN
tbljournaalposten ON rabobank2_2.Volgnr = tbljournaalposten.Volgnr
WHERE
rabobank2_2.invoerdatum = invoerdatum.invoerdatum
GROUP BY tbljournaalposten.volgnr
HAVING count(tbljournaalposten.ID) > 1
);
此外,sub uqeyr 中的
ORDER BY
在这种情况下没有意义。