mysql表的粗略结构是这样的 人名,手机号码1,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(近百万条记录。),所以脚本会非常慢/需要很长时间才能完成。
答案 0 :(得分: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
声明中,但我会让你自己尝试。 (顺便说一句,从here得到FUNCTION
。