代码之家  ›  专栏  ›  技术社区  ›  Chènevis

SQL Where NOT IN返回空白

sql
  •  0
  • Chènevis  · 技术社区  · 4 年前

    我有电子邮件的分数与几个电子邮件的每一个分数。我知道如何获得每个电子邮件的最高分数,然后我想删除其他行。我试图删除不在最大分数列表中的所有行,但它不起作用。

    SELECT * 
    FROM mkgaction AS a
    WHERE id NOT IN (SELECT id 
                     FROM
                         (SELECT * 
                          FROM mkgaction AS b 
                          ORDER BY `score` DESC) x
                     GROUP BY `score`)
    

    select id返回正确的列表,但是all请求没有返回行。。。

    1 回复  |  直到 4 年前
        1
  •  1
  •   Gordon Linoff    4 年前

    delete ma
        from mkgaction ma join
             (select ma2.email, max(ma2.score) as max_score
              from mkgaction ma2
              group by ma2.email
             ) ma2
             on ma.email = ma2.email and ma.score < ma2.max_score;