0

mysql表的大致结构是这样的Person Name, Mobile Number1, Mob2, Mob3, Mob4。

我想做的是:例如,如果表中有同一个人的 4 条记录,例如:

Person Mob1 Mob2 Mob3 Mob4
John   123  
John   435
John   324
John   432

我需要将四个记录合并为一个,例如:

Person  Mob1 Mob2 Mob3 Mob4
John    123  435  324  433

是否可以在 phpMyAdmin 中使用 mysql 查询来做到这一点?我知道使用 php 脚本是可能的,但是表非常大:接近 500Mb(近一百万条记录。),所以脚本会非常慢/需要很长时间才能完成。

4

1 回答 1

0

我认为您需要使用存储过程,检查这些其他帖子以获取(可能)有用的信息:

或者你可以尝试使用一个函数和一个 group_concat():

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
 LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
 delim, '');

然后选择查询将是:

SELECT
  tmp.id,
  SPLIT_STR(tmp.mobs, ',', 1) as mob1,
  SPLIT_STR(tmp.mobs, ',', 2) as mob2,
  SPLIT_STR(tmp.mobs, ',', 3) as mob3,
  SPLIT_STR(tmp.mobs, ',', 4) as mob4
  FROM (
    SELECT
      id,
      GROUP_CONCAT(mob1) as mobs
    FROM person
    GROUP BY name
  ) tmp

当然,那你必须将它整合到一个UPDATE声明中,但我会让你自己尝试。(顺便说一句,FUNCTION这里得到)。

于 2013-01-11T23:01:22.323 回答