mysql - SQL查询删除特定条件的行

标签 mysql sql

我正在尝试为以下内容编写查询

mysql db有两列数据如下

no id
1   1
1   2
1   3
2   4
3   5
3   6
4   7
5   8

我需要为以下条件编写查询

当“no”重复出现时,从数据库中删除所有那些“no”相同且“id”> id 的 min 的“no”

expected output for the above table
no id
1   1
2   4 
3   5
4   7
5   8

最佳答案

DELETE  a
FROM    tableName a
        LEFT JOIN
        (
            SELECT  no, MIN(ID) min_ID
            FROM    tableName
            GROUP   BY no
        ) b ON a.no = b.no AND
                a.id = b.min_ID
WHERE   b.no IS NULL

反之,

DELETE  a
FROM    tableName a
        INNER JOIN tableName b 
        ON a.no = b.no
WHERE   a.id > b.id

关于mysql - SQL查询删除特定条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16730136/

相关文章:

php单例数据库连接,这段代码是不好的做法吗?

mysql - phpmyadmin 设计模式不存在

java - 不通过 while (rs.next()) 处理所需的输出

不是瀑布分组的 SQL CASE 语句

php - 如果无法正常工作,则在其中分页

mysql - 在centos 7上配置mysql 5.6的多个实例

SQL SERVER 计算一天的一条记录

SQL - 在查询中创建标志以突出显示包含数量 = 1 的订单

sql - 在 SQL Server 中查找在特定[月份]内未晋升的员工

php - php 修改默认时区的方法