Php MySQL删除除NULL之外的重复行

Php MySQL删除除NULL之外的重复行,php,mysql,sql,sql-delete,Php,Mysql,Sql,Sql Delete,我的数据库中有一个表Final,我想删除所有重复的行,除了 那些有空值的人; 我尝试了上述方法: DELETE FROM Final WHERE event_id NOT IN (SELECT MIN(event_id) AS MinID FROM (SELECT * FROM Final) as x GROUP BY event_name

我的数据库中有一个表Final,我想删除所有重复的行,除了 那些有空值的人; 我尝试了上述方法:

 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)
但是没有起作用

编辑

我的桌子看起来像:

id |珊瑚 1 |空 2 | 1
3 | 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
只需将事件_name NOT 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

因为您没有关闭子查询的括号。在每个组中重复的列是什么?event_name是该列。。此列可能有1,2,1,4,NULL,NULL,2。。我想要1,2,4,NULL,NULL,我不认为这是你的问题,但如果可以的话,我建议使用backticks`作为表名和列名,以避免与mysql关键字或未来可能的关键字冲突。i、 e.从'Final'中删除我不确定是否理解您的解决方案。。我只有一个表final这与使用子查询的解决方案相同。尝试执行上面的语句,但请先做一些备份。您能提供示例记录以便我修改查询吗?表上可能有4-5条记录。如果执行上面的语句会发生什么?天哪,它就像一个符咒!!非常感谢你@JW。对不起,我迟到了!!