php - MySQL 删除除 NULL 之外的重复行

标签 php mysql sql sql-delete

我的数据库中有一个表(最终),我想删除除
之外的所有重复行 那些有 NULL 值的人;
我尝试了上面的方法:

 DELETE FROM Final 
  WHERE event_id NOT IN (SELECT MIN(event_id) AS MinID 
                           FROM (SELECT * FROM Final) as x 
                          GROUP BY event_name
                            AND event_name IS NOT NULL)

但没有成功。

编辑

我的 table 看起来像:

id |珊瑚
1 |空
2 | 1
3 | 1 <- 删除
4 | 2
5 | NULL <- 保持原样
6 | 1 <-删除

最佳答案

加入表格怎么样?

DELETE  a
FROM    Final a
        LEFT JOIN
        (
            SELECT  Event_name, MIN(Event_ID) MIN_ID
            FROM    Final
            WHERE   Event_name IS NOT NULL
            GROUP   BY Event_name
        ) b ON a.Event_name = b.Event_name AND
                a.Event_ID = b.MIN_ID
WHERE   a.Event_name IS NOT NULL AND 
        b.Event_name IS NULL

关于php - MySQL 删除除 NULL 之外的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15661141/

相关文章:

php - Codeigniter 和 HTML5 - 尝试一次上传多张图片

mysql 获取每个单词的第一个字母

php - SQL 计算个人最佳表中所有时间记录中保存的记录

php - 除了作为 blob 之外,是否有更节省空间的方式将图像存储在数据库中?

sql - 如何进行JOIN并在同一条语句中写入列

php - 使用 javascript 组合两个下拉列表的值并将值传递到隐藏字段

php - 需要查询或交易将数据导出为设定格式

sql - 这个查询是如何工作的?

UPDATE + CASE WHEN + EXISTS + SELECT MAX 的 MySQL 语法

php - Laravel - 导致 404 错误的事件