gpt4 book ai didi

php - MYSQL PHP 根据重复列合并多行

转载 作者:行者123 更新时间:2023-11-30 23:53:34 24 4
gpt4 key购买 nike

我有一个电子邮件列表,其中有很多重复数据,我想合并在特定列中有重复数据的行。

这是我的表格:

autoid,title,lastname,firstname,middlename,prefix,
fulladdress,address1,address2,
city,state,zip,country,county,phone1,phone2,email,id, ts

我想合并基于电子邮件和电话 1 的重复行。如果这些内容在两行中相同,那么我想合并这些行并填充任何空白,然后删除第二行。具有较低 autoid 的行中的数据将优先于具有较高 id 的行。

如果我们可以使用单个 mysql 查询来完成此操作,那就太好了,但如果我们必须使用 PHP,那也可以。

最佳答案

您可以使用类似的方法将多行合并为一行

GROUP BY email, phone1

如果你只插入这个,你会得到任何一个组合行。如果您希望值优先于 NULL 字段,您可以使用聚合函数,例如最小值:

SELECT MIN(title), MIN(lastname), …
FROM tableName
GROUP BY email, phone1

但这会决定分别为每一行取哪个值。组合行但以您描述的方式组合行的查询在 MySQL 中会相当棘手。您可以有一个查询,它按照匹配列的顺序列出所有行,然后降序 autoid,使用用户变量来填补空白。但是不填补非匹配行中的空缺会很困难,因此针对每个匹配对的一个子查询可能会更好。除了查询的性能和可读性之外,总的来说,您可能最好使用 PHP 解决方案。

在 PHP 中,事情应该相当简单:用 查询数据库

ORDER BY email, phnone1, autoid ASC

然后在 PHP 端,对于您从数据库中读取的每一行,检查它是否与两个特定列中先前读取的行匹配。如果是,则遍历列,随时替换 null。这些天我不是一个 PHP 编码员,所以其他人可能更适合为此编写代码片段。

关于php - MYSQL PHP 根据重复列合并多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14313408/

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