【问题标题】:Remove one of duplicate records删除重复记录之一
【发布时间】:2019-10-16 00:45:10
【问题描述】:

这是我的数据库表,表名是food_user。我使用 mariadb 版本 10.1.38。

我运行以下 sql 查询:

INSERT INTO food_user (NAME,re_date,re_day)
SELECT 'Alex','2019-01-01' + INTERVAL seq DAY,DAYNAME('2019-01-01' + INTERVAL seq DAY)
FROM seq_0_to_364; 

两次。所以有两个相同日期的数据如下面的截图所示。

我想删除两个相同日期之一。

我试试这个查询。

DELETE n1 from food_user n1, food_user n2 
where n1.id > n2.id
  and n1.sum=0 and n2.sum=0
  and n1.name='Alex'
  and n2.name='Alex'
  and n1.re_date=?
  and n2.re_date=?;

我不知道正确的查询。

【问题讨论】:

  • 运行此查询时会发生什么...
  • ????????请在此处以纯文本形式发布代码、错误、示例数据或文本输出,而不是难以阅读的图像,不能复制粘贴以帮助测试代码或在答案中使用,并且是那些依赖的人的障碍在屏幕阅读器上。您可以编辑问题以在问题正文中添加代码。为了便于格式化,请使用{} 按钮标记代码块,或者使用四个空格缩进以获得相同的效果。 屏幕截图的内容无法搜索、作为代码运行或复制和编辑以创建解决方案。
  • 好的。我编辑代码。谢谢。

标签: mysql mariadb


【解决方案1】:

您的删除查询应如下所示。

delete from food_user where id in 
(
   select x.id from (select min(id) as id from food_user t group by name, re_date having count(1) = 2) as x
)

【讨论】:

  • 此代码语法错误。我想知道 re_date = ?这个?。
  • 我更新了,我发现你只是想删除那些重复的。
  • 此代码 1093 错误。表“food_user”被指定了两次,分别作为“DELETE”的目标和单独的数据源。
  • 现在试试,我包装了子查询
  • 对不起.. 此代码 1054 SQL 错误 Unknown column x.id in 'field list' 非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
  • 2011-08-18
  • 2016-01-07
  • 1970-01-01
  • 2018-02-17
相关资源
最近更新 更多