合并SQL条目

时间:2015-03-21 12:23:42

标签: mysql sql

我有一个问题。

我有这个MySQL表:

id | name | subid
1  | Joe  | 5
2  | Carl | 6
3  | Bob  | 7
4  | Joe  | 8
5  | Carl | 9

我希望像这样合并:

id | name | subids
1  | Joe  | 5,8
2  | Carl | 6,9
3  | Bob  | 7

这可能吗? 我有一个真正的大数据库,如果我用PHP-Cronjob做这个,它需要几个星期......

2 个答案:

答案 0 :(得分:0)

您正在寻找group_concat()

select min(id) as id, name, group_concat(subid) as subids
from table t
group by name;

答案 1 :(得分:0)

GROUP BYGROUP_CONCAT绝对可以合并行。然而,这将取代另一个问题,甚至可能是更大的问题。如果有的话,你应该拆分表,而不是合并它。

创建两个表 - 一个用于用户,另一个用于用户子ID。填充这两个将非常容易,最终你会有一个很好的规范化模式。

CREATE TABLE USER_SUBID (USER_ID int, SUBID int);

CREATE TABLE NEW_USER (ID int, NAME varchar(20));

INSERT INTO NEW_USER (ID, NAME)
SELECT MIN(Id) as ID, NAME
FROM OLD_USERS
GROUP BY NAME

INSERT INTO USER_SUBID (USER_ID, SUBID)
SELECT MIN(Id) as USER_ID, SUBID
FROM OLD_USERS
GROUP BY NAME, SUBID

这将使两个表的数据如下:

NEW_USER:
ID Name
-- ----
1  Joe
2  Carl
3  Bob

USER_SUBID:
USER_ID SUBID
------- -----
1       5
1       8
2       6
2       9
3       7