SQL Where NOT IN返回空白
我正在尝试获取id不在列表中的行。 我有一封带有分数的电子邮件,每个分数有几封电子邮件。我知道如何获得每封电子邮件的最大分数,然后我想删除其他行。我尝试删除不在最大分数列表中的所有行,但它不起作用SQL Where NOT IN返回空白,sql,Sql,我正在尝试获取id不在列表中的行。 我有一封带有分数的电子邮件,每个分数有几封电子邮件。我知道如何获得每封电子邮件的最大分数,然后我想删除其他行。我尝试删除不在最大分数列表中的所有行,但它不起作用 SELECT * FROM mkgaction AS a WHERE id NOT IN (SELECT id FROM (SELECT * FROM mkgaction AS
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请求不返回任何行
你知道为什么吗?如果你的查询能正常工作,那么你可能正在使用MySQL。该数据库中的语法为:
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;
您的查询格式不正确。您已通过分组方式选择*。请提供示例数据、所需结果、清晰的解释,并标记您正在使用的数据库。看起来sub-select将返回表中的每个id,因为其中没有WHERE子句。如果是这种情况,没有ID不在该列表中,因此它不会返回任何行。它的工作,它看起来不像我最初的要求,所以我将需要一点时间来理解它,但非常感谢@契尼维斯。这更多地基于您对问题的描述,而不是您的查询。