2015-04-23 59 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

非常感謝你!你救了我幾個小時! –