gpt4 book ai didi

mysql - 如何编写 MySQL 选择查询来获取选择列中的重复项,但在另一个列中获取唯一的

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

假设我有一个包含 3 列 A、B、C 的表。我想要一个结果集,该结果集表示那些 A 或 B 具有多个/重复条目但 C 具有唯一条目的条目。

我知道 GROUP BY 子句在这种情况下会派上用场,但它似乎比这更复杂。

例如:假设一个包含客户信息的表,其中包含以下列:1)身份证号码2)电话3)电子邮件4)账户

获取多次出现相同电话或电子邮件但属于不同帐户的 ID。例如,对于原始表中的以下条目:

1) ID:12 |电话:111-111-1111 |电子邮件:johnc@email.com |帐号:2

2) ID:14 |电话:111-111-1111 |电子邮件:jcena@gmail.com |帐号:5个

3) ID:15 |电话:123-234-7890 |电子邮件:jdoe@email.com |帐号:12

4) ID:21 |电话:900-893-4563 |电子邮件:jdoe@email.com |帐号:23

5) ID:17 |电话:222-333-1111 |电子邮件:abet@email.com |帐号:3

6) ID:19 |电话:222-333-1111 |电子邮件:abet@email.com |帐号:3

结果行如下:

1)ID:12、14 |帐户:2、5

2)ID:15、21 |帐户:12、23

条目 #5 和 #6 未包含在内,因为帐户值没有不同,尽管电话和电子邮件相同。

提前致谢!

最佳答案

您可以使用group by和group concat来收集所有id和accountno值。要通过电子邮件或电话号码删除重复项,请使用不同计数。通过 Union all 合并所有结果。 Union 比 union 更好,因为我们确信重复项已被删除。

演示:http://sqlfiddle.com/#!9/e0af39/2

Select group_concat(id order by id) as id,
group_concat(accountNo order by accountNo) as
accountno
From Tbl
Group by Email
Having count(distinct accountno) > 1
UNION ALL
Select group_concat(id order by id) as id,
group_concat(accountNo order by accountNo) as
accountno
From Tbl
Group by Phone
Having count(distinct accountno) > 1


Result:
id accountno
13,17 4,8
12,14 2,5

关于mysql - 如何编写 MySQL 选择查询来获取选择列中的重复项,但在另一个列中获取唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49524167/

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