gpt4 book ai didi

Mysql Select Distinct w TRIM() 和 Subselect 优化性能

转载 作者:行者123 更新时间:2023-11-29 07:44:41 28 4
gpt4 key购买 nike

我有一个带有列的表mailing_list

id, optout, email

电子邮件有重复项,但即使电子邮件是原来的,选择退出也不相同相同的。所以我们可以得到这样的数据......

id optout email

1 0 test1@email.com
2 1 test1@email.com
3 0 test1@email.com
4 0 test2@email.com
5 1 test3@email.com
6 0 test4@email.com
7 1 test4@email.com
8 0 test4@email.com

我想要实现的最终结果是两个列表,optin 和 optout

到目前为止,我发现执行此操作的最佳方法是使用以下查询,但性能很慢,所以想寻找更好的方法。修剪函数需要在那里,因为有些电子邮件有空格有些人在选择不同时不这样做,如果我仍然会被骗不要使用 TRIM。

(选择)

select distinct TRIM(email) as emails from mailing_list where optout = 0
and email not in (select email from mailing_list where optout = 1) order by emails

(选择退出)

select distinct TRIM(email) as emails from mailing_list where optout = 1
and email not in (select email from mailing_list where optout = 0) order by emails

任何帮助将不胜感激。

谢谢

最佳答案

对于那些选择退出的人:

select trim(email) as trimmed_email, sum(optout) as qty
from mailing_list
group by trimmed_email
having qty > 0;

对于那些选择加入的人:

select trim(email) as trimmed_email, sum(optout) as qty
from mailing_list
group by trimmed_email
having qty = 0;

关于Mysql Select Distinct w TRIM() 和 Subselect 优化性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28154824/

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