gpt4 book ai didi

MySQL GROUP BY 同时按列内容保留某些行

转载 作者:行者123 更新时间:2023-11-29 06:26:47 25 4
gpt4 key购买 nike

表中有重复的行。请参阅第 1 行和第 2 行:

id   full_name    email           status   active
1 John Doe john@mail.com ok 1
2 John Doe john@mail.com null 1
3 Ricky Duke rick@mail.com null 1
4 Jane Doe jane@mail.com block 1

我需要选择不同的行,而不是随机选择 - 一个不同的行,但是具有'status' NOT NULL的行。

我的查询是:

SELECT full_name, email
FROM `subscribers`
WHERE active = 1 AND (status = 'ok' OR status IS NULL)
GROUP BY email

该查询随机选择不同的行,而不优先考虑“状态”字段。

如何优先选择具有“状态”NOT NULL的不同行,并仅在不存在具有“ok”状态的行的情况下选择具有 NULL 的行?

最佳答案

您可以使用row_number():

select s.*
from (select s.*,
row_number() over (partition by email order by (status is not null) desc) as seqnum
from subscribers s
where active = 1
) s
where seqnum = 1;

关于MySQL GROUP BY 同时按列内容保留某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59040832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com