sql - 如何删除除一个之外的重复行?

标签 sql sqlite

mytable 上没有主列:

<表类="s-表"> <头> 姓名 <日>公司 位置 <正文> 迈克尔 谷歌 测试人员 迈克尔 谷歌 测试人员 迈克尔 谷歌 测试人员 彼得 Facebook 开发者 彼得 Facebook 开发人员 彼得 Facebook 开发者 彼得 Facebook 开发者

我想要什么:

<表类="s-表"> <头> 姓名 <日>公司 位置 <正文> 迈克尔 谷歌 测试人员 彼得 Facebook 开发者

这不起作用:

DELETE FROM
   mytable
WHERE
   Name NOT IN (
      SELECT
         MAX(Name)
      FROM
         mytable
      GROUP BY
         Company
   )
;

在没有创建新表和 CTE 的情况下,如何删除除一个之外的重复行?

最佳答案

您可以选择保留 rowid 分组的 minmax 显示的 3 列。

delete from myTable
where rowid not in (select min(rowid)
                    from myTable
                    group by name,company,position)

关于sql - 如何删除除一个之外的重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45215241/

相关文章:

sql - 处理 PostgreSQL 异常的优雅方式?

mysql - 改进我的 sql 查询以在表的所有列中搜索文本

php - 使用大量数据创建查询的最佳方法是什么?

mysql - 指定两个月之间距离的铁路迁移..?

ruby-on-rails - Rails应用程序无法在AWS Elastic Beanstalk上运行,sqlite3错误

android - 代码有问题吗?

c++ - 使用 Qt 捕获 SQL 错误

sql - 最后一小时计数和最后收到

android - 如何在单个 Activity 中加载多个 AndroidViewModel 以访问使用 Room 从多个表返回值的 LiveData

php - SQLite - 限制?漏洞?带有 HAVING 子句的准备语句