【问题标题】:remove duplicate records - mysql删除重复记录 - mysql
【发布时间】:2015-12-18 08:10:44
【问题描述】:

我想删除重复记录并使用此查询:

 DELETE FROM news e
 GROUP BY e.itemId, e.tag_id
 HAVING COUNT(e.itemId) > 1
    AND COUNT(e.tag_id) > 1

但得到这个错误:

[Err] 1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'e

附近使用的正确语法

我该怎么做?

【问题讨论】:

  • 嗯,错误信息非常准确:e 在那里没有意义。只有在 SELECT 和 UPDATE 查询中重命名表才有意义。一个 DELETE 查询只需要一个表名。
  • 我只是删除了一些重复的记录,除了一个..

标签: mysql sql


【解决方案1】:

我不确定您在这里想要达到什么目的,请扩展您的解释以添加更多信息。据我所知,您实际上需要创建一个子查询,因为您不能直接在删除时使用 GROUP BY,请尝试以下操作:

delete from table 
where columnA in (
  select columnA
  from (
      select columnA
      from YourTable
      group by columnA
      having count(*) > 1
      ) t  
)

不完全适合您的问题,但您应该明白。

【讨论】:

  • 使用此格式时,显示此错误您无法在 FROM 子句中指定目标表 'news' 进行更新
  • 不是你的代码,它是从stackoverflow.com/questions/6296102/mysql-delete-with-group-by复制粘贴
  • 是的,但是这样不行吗?这只是有用的信息,而没有问题的链接只会造成麻烦。
【解决方案2】:

要删除重复记录,请使用此查询

DELETE
    n1
FROM
    news n1,
    news n2
WHERE
    n1.id < n2.id
AND n1.itemId = n2.itemId
AND n1.tag_id = n2.tag_id
AND n1.tag_id IS NOT NULL

【讨论】:

    猜你喜欢
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2011-08-31
    相关资源
    最近更新 更多