gpt4 book ai didi

MYSQL count 次数值在 3 列中

转载 作者:行者123 更新时间:2023-11-29 18:40:54 25 4
gpt4 key购买 nike

我有一个查询,用于获取有关客户的一些数据。该客户可以拥有三个电话号码,并且可以重复。

要计算这些电话重复的次数,合作伙伴创建了子选择:

(select count(*) 
from TABLE_A as k
where (k.phone=a.phone or k.phone2=a.phone or k.phone3=a.phone)
and k.id!=a.id) as repetitionsPhone1

这是一个更大的选择,如下所示:

    SELECT a.*,c.*,b.*, 
(
select count(*)
from TABLE_A as k
where (k.phone=a.phone or k.phone2=a.phone or k.phone3=a.phone)
and k.id!=a.id
) as repetitionsPhone1
FROM a
left join c on a.id=c.id
left join b on a.id=b.id

此查询需要大约 30 秒,查询 50 行,每天应该返回大约 2000 行。

为了优化这个,我使用explain,我发现这个子查询是问题所在,所以我搜索并尝试了这个:

SELECT phn,sum(count) as phoneRepetitions
from (
select k.phone1 as phn, count(*) as count
from k
group by k.phone1
UNION
select k.phone2 as phn,count(*) as count
from k
group by k.phone2
UNION
select k.phone3 as phn,count(*) as count
from k
group by k.phone3
) as aux
group by phn

这将返回#1062 MYSQL 错误:键“不同键”的重复条目

首先我想解决这个问题。有人知道发生了什么事吗?这个错误在 insert 语句中似乎是逻辑,但在 select 中?

然后,这将有助于改进我必须优化的大选择?我必须对三列执行此操作。

谢谢。

最佳答案

SELECT count(*) from

(SELECT phones1 FROM k
union
SELECT phones2 from k
union
SELECT phones3 from k)

AS SumCountPhones

这似乎对我有用。
解决方案按照How do I add two count(*) results together on two different tables?

您可以继续堆叠联合。

关于MYSQL count 次数值在 3 列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44947402/

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