gpt4 book ai didi

mysql - 智能合并 MySQL 选择结果中的重复行

转载 作者:行者123 更新时间:2023-11-29 19:46:12 24 4
gpt4 key购买 nike

我有一个小型 MySQL 数据库,其中包含我居住的小区中的 100 多名居民。为了简单起见,它包含单位号码、姓氏、名字、电话号码和电子邮件地址。电子邮件地址与问题无关,但它们解释了为什么同一单位中同姓的人有不同的条目。

以下是一些示例数据:

UNIT,SURNAME,FIRST_NAME,PHONE
1,Evans,Bob,12345
2,Smith,Jane,23456
2,Smith,Jim,23456
3,Jones,Joe,45678
4,Jones,Jason,98765
5,Wong,Bill,95147
5,Lee,Jane,95147

总结以上数据:

  • 鲍勃·埃文斯独自生活,
  • Jane 和 Jim Smith 住在同一单元,并使用相同的电话号码(但电子邮件地址不同,因此条目是分开的),
  • 乔·琼斯 (Joe Jones) 和杰森·琼斯 (Jason Jones) 尽管姓氏相同,但住在不同的单位,并且(显然)拥有不同的电话号码,并且
  • Bill Wong 和 Jane Lee 住在一起,使用相同的电话号码,但姓氏不同。

我想创建一个选择查询,该查询将生成一个电话列表(按姓氏排序),该列表可以智能地识别两个具有相同姓氏且共享相同电话号码的人(几乎假设他们共享相同的单位号码) ,但我认为与实际的 MySQL 查询无关)并将它们合并到结果中的一行中,同时将不同姓氏但相同电话号码的人分开。换句话说,对上述数据进行选择的结果将如下所示:

UNIT,SURNAME,FIRST_NAME,PHONE
1,Evans,Bob,12345
4,Jones,Jason,98765
3,Jones,Joe,45678
5,Lee,Jane,95147
2,Smith,Jane & Jim,23456
5,Wong,Bill,95147

Some research 引导我进行以下查询,它几乎满足了我的要求:

SELECT unit, surname, phone,
group_concat(first_name order by first_name SEPARATOR ' & ') AS name
FROM owners
GROUP BY surname;

但是,将 Joe Jones 和 Jason Jones 合并到 Joe Jones 的电话号码和单位号码下:

3,Jones,Joe & Jason,45678

我想改进该查询,以使 Joe Jones 和 Jason Jones 成为他们自己的单独条目,并拥有自己的电话号码。如果有帮助,每行都有一个主键“id”列。

欢迎任何建议或指示。非常感谢。

克雷格

最佳答案

我会尝试将 unitphone 列添加到 group by 子句中:

示例:

按姓氏、单位分组

按姓氏、电话分组

您还可以添加两列:

按姓氏、单位、电话分组

关于mysql - 智能合并 MySQL 选择结果中的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40957771/

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