2015-04-23 62 views
1

嗨,我有一个具有价值插入选择与组CONCAT

domain     user    groups 
test_at_test.com   john    first 
test_at_test.com   mary    second 
test_at_test.com   john    second 

等表..

我想group concat该表并插入值,以新表或update当前表我没有用的问题,并有新表是这样

domain    user    groups 
test_at_test.com   john    first,second 
test_at_test.com   mary    second 

我写了下面的command,但我得到了error列数并不在行匹配值计数1 INSERT INTO newtable SELECT * , GROUP_CONCAT(groups) FROM table GROUP BY user ORDER BY domain

+0

这听起来像一个可怕的想法。你为什么想这样做? – Strawberry

+0

,因为第一个表中的值是从查询中插入的,我不想让每个用户多次,因为唯一更改的字段是组。如果有一种方法可以在初始插入时使用concat,那会更好,但我不能那样做。我是新来的SQL和PHP! –

+0

通常,存储可以从现有数据中即时计算的数据是一个好主意。 – Strawberry

回答

1

您的新表有3列,但在选择的结果集将有4列,你需要在你的SELECT语句

指定列
INSERT INTO newtable 
SELECT `domain`, `user`, GROUP_CONCAT(groups) 
FROM table GROUP BY user 
ORDER BY domain 

DEMO

注意结果被截断为由group_concat_max_len系统变量给出的最大长度,该系统变量的默认值为 ,该值为1024.尽管返回值的有效最大长度为 受到值为 max_allowed_pa​​cket。

+1

非常感谢你!你救了我几个小时! –