使用sql删除重复行

2024-07-03

我正在尝试从 mysql 表中删除重复的行。我尝试了多个查询,但不断收到此错误:#1093 - You can't指定目标表“usa_city”以在 FROM 子句中进行更新

该表如下所示:

usa_city
--------
id(pk)
id_state
city_name

我厌倦的查询是:

DELETE FROM usa_city
WHERE id NOT IN
(
SELECT MIN(id)
FROM usa_city
GROUP BY city_name, id_state
)

And:

DELETE
FROM usa_city
WHERE usa_city.id IN

-- List 1 - all rows that have duplicates
(SELECT F.id
FROM usa_city AS F
WHERE Exists (SELECT city_name, id_state, Count(id)
FROM usa_city
WHERE usa_city.city_name = F.city_name
   AND usa_city.id_state = F.id_state
GROUP BY usa_city.city_name, usa_city.id_state
HAVING Count(usa_city.id) > 1))
AND usa_city.id NOT IN

-- List 2 - one row from each set of duplicate
(SELECT Min(id)
FROM usa_city AS F
WHERE Exists (SELECT city_name, id_state, Count(id)
FROM usa_city
WHERE usa_city.city_name = F.city_name
   AND usa_city.id_state = F.id_state
GROUP BY usa_city.city_name, usa_city.id_state
HAVING Count(usa_city.id) > 1)
GROUP BY city_name, id_state);

提前致谢。


尝试先选择重复项,然后删除它们

DELETE FROM usa_city WHERE city_id IN
(
SELECT city_id FROM usa_city
GROUP BY city_name, id_state
HAVING count(city_id) > 1
)

希望能帮助到你!!!

修改:根据评论,如果你想保留一项记录,您可以进行连接并保留最低值

DELETE c1 FROM usa_city c1, usa_city c2 WHERE c1.id < c2.id AND 
(c1.city_name= c2.city_name AND c1.id_state = c2.id_state)

请务必在执行上述查询之前进行备份...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用sql删除重复行 的相关文章

  • 如何插入只有一个 IDENTITY 列的表?

    在尝试回答的过程中提出了这个问题另一个 https stackoverflow com questions 850017 how to manage groups in the database 850049 850049 考虑下面的 MS
  • 在 redshift 上查询数据时出错 - 获取条带数据时出错

    我正在尝试在 redshift 中的外部表上运行以下查询 select from schema table limit 10 我收到一个错误 2018 06 20 12 03 14 XX000 500310 Amazon 无效操作 S3 查
  • 更改 SQL Server 中的列

    什么是正确的语法ALTER语句向现有列添加默认值 我可以毫无错误地添加新列 ALTER TABLE tb TableName ADD Record Status varchar 20 但是如果我尝试使用以下语句更改现有列以应用默认值 ALT
  • 更改 SQL Server 中的列

    什么是正确的语法ALTER语句向现有列添加默认值 我可以毫无错误地添加新列 ALTER TABLE tb TableName ADD Record Status varchar 20 但是如果我尝试使用以下语句更改现有列以应用默认值 ALT
  • Postgres 中的动态 UNION ALL 查询

    我们使用 Postgres PostGis 连接来获取通过地理服务器发布的数据 查询现在看起来像这样 SELECT row number over ORDER BY a ogc fid AS qid a wkb geometry AS ge
  • Postgres 中的动态 UNION ALL 查询

    我们使用 Postgres PostGis 连接来获取通过地理服务器发布的数据 查询现在看起来像这样 SELECT row number over ORDER BY a ogc fid AS qid a wkb geometry AS ge
  • 上下文 sp_OAMethod“发送”中的 msxml3.dll

    Win2003 SQL Server 2005 中的工作代码在 Win2012 SQL Server 2012 sp1 下无法工作 唯一 真实solution https social msdn microsoft com 443 Foru
  • pyspark的approx_count_distinct中rsd的解释是什么以及更改它的后果是什么?

    在 pyspark 的近似计数不同 https spark apache org docs 3 1 2 api python reference api pyspark sql functions approx count distinct
  • 数据库异常 - 一般错误:1021 磁盘已满

    谁能帮我理解为什么这个查询说光盘已满 数据库异常 SQLSTATE HY000 一般错误 1021 磁盘已满 tmp sql 1445 3 MAI 等待有人释放一些空间 错误号 28 设备上没有剩余空间 Query 这是服务器问题 只有楼主
  • 是否有一个表保存 sysobjects.xtype 描述的列表?

    根据sysobjects 文档 https msdn microsoft com en us library ms177596 aspx sysobjects xtype可以是以下对象类型之一 xtype Description AF Ag
  • Web 配置文件中的连接字符串出现问题

    我正在尝试在 Web 配置文件中设置 mysql 连接 这是连接字符串代码
  • 使用 FOR XML 从 SQL Server 2008 R2 返回空或 null 字段作为

    我正在使用 SQL Server 2008 R2 运行查询FOR XML PATH 我唯一的问题是我希望所有元素都出现 即使它们是 NULL 并且我希望空 或 null 元素返回为
  • 通过 SQL 查询安全地标准化数据

    假设我有一张客户表 CREATE TABLE customers customer number INTEGER customer name VARCHAR customer address VARCHAR 这张表确实not有一个主键 然而
  • 通过 AJAX 调用的 PHP header() 无法正常工作

    我是网络开发新手 现在我正在开发网站上的登录功能 我使用 Javascript AJAX 获取用户名和密码并将其发送到 PHP 文件以在 MYSQL 数据库上进行验证 这就是我要做的 我的问题是为什么 header 函数不能正常工作 我想在
  • MySQL 中将行数据转换为列

    我有 MySQL 表以这种格式存储数据 Type Month Count 1 9 4 3 9 7 99 9 2 1 10 6 3 10 7 99 10 9 类型列可以保存 3 个值 1 3 99 中的任意一个 月份将包含从 1 到 12 的
  • 模糊不同值

    我有一个房地产列表数据库 需要返回社区列表 现在我正在使用 mysql DISTINCT 它返回所有不同的值 我的问题是有很多社区具有相似的名称 例如 Park View Sub 1 Park View Park View Sub 2 Pa
  • 分组依据 - 多个条件 - MySQL

    如何根据条件组合 2 个组 我有一天中每个小时的每个 id 的记录 我想按第一个 id 和当天该 id 的所有记录对信息进行分组 然后按第二个 id 和当天该 id 的所有记录对信息进行分组 我的示例查询是这样的 SELECT r name
  • 如何在SQL中搜索日期?

    我有一个我想要的事件管理系统 如果某个活动注册了 5 天 2009 年 1 月 21 日至 2009 年 1 月 26 日 那么如果另一个人想要在 2009 年 1 月 22 日至 24 日期间注册活动 则不允许注册 我想使用 SQL 查询
  • mySQL 和 XAMPP 端口冲突

    我已经使用 XAMPP Apache 一段时间了 最 近决定安装 MySQL 然而 它们似乎是矛盾的 MySQL 似乎优先 并且它运行正常 但是 XAMPP Apache 在尝试启动 Apache 时给我此错误消息 03 07 32 AM
  • PHP 从 MySQL 中选择日期字段为未来 7 天

    我有一个自动检查器 可以检查将在未来 7 天内过期的域名 并向客户发送电子邮件 我使用这个 SQL 查询 SELECT from domain names where status or status valid and expiry da

随机推荐