删除具有

问题描述 投票:0回答:1

我做了一个删除查询来删除 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 的记录会被删除。

mysql having
1个回答
0
投票

此查询可能会删除您不想要的那些行,因此只需确保不会丢失

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
在这种情况下没有意义。

© www.soinside.com 2019 - 2024. All rights reserved.