2013-02-04 31 views
1

什麼,我試圖做的是複製一些列其他表由obj_idCONCAT列和複製到其他表的MySQL

UPDATE obj_object 
INNER JOIN obj_extract as address ON (obj_object.id = address.obj_id AND address.category_id = 1) 
INNER JOIN obj_extract as city ON (obj_object.id = city.obj_id AND city.category_id = 2) 
INNER JOIN obj_extract as country ON (obj_object.id = country.obj_id AND country.category_id = 3) 
INNER JOIN obj_extract as phone ON (obj_object.id = phone.obj_id AND phone.category_id = 4) 
SET obj_object.address = address.info, 
    obj_object.city = city.info, 
    obj_object.country = country.info, 
    obj_object.phone = phone.info 

但有些obj_extract行具有相同category_id,我需要的,如果含有相同的記錄數obj_id有多條同一行category_id如果有,我需要concat這些條目並複製到obj_object表列。表例如:

+----+--------------+---------+---------+ 
| ID | category_id | info | obj_id | 
+----+--------------+---------+---------+ 
| 1 |  1  | test | 2 | 
+----+--------------+---------+---------+ 
| 2 |  1  | test1 | 2 | 
+----+--------------+---------+---------+ 
| 3 |  2  | test2 | 2 | 
+----+--------------+---------+---------+ 

我需要這樣的:

obj_object.address = 'test - test1', // // value from address.info 
obj_object.city = 'test2', // value from city.info 
+0

你想得到什麼輸出? – Walter

+0

@RubberDucky編輯了我的問題 – DDD889

回答

1

你需要考慮使用GROUP_CONCAT

UPDATE obj_object o 
SET o.address = (SELECT GROUP_CONCAT(info) 
       FROM obj_extract o2 
       WHERE o.id = o2.obj_id AND o2.category_id = 1), 
    o.city = (SELECT GROUP_CONCAT(info) 
      FROM obj_extract o3 
      WHERE o.id = o3.obj_id AND o3.category_id = 2), 
    o.country = (SELECT GROUP_CONCAT(info) 
       FROM obj_extract o4 
       WHERE o.id = o4.obj_id AND o4.category_id = 3), 
    o.phone = (SELECT GROUP_CONCAT(info) 
      FROM obj_extract o5 
      WHERE o.id = o5.obj_id AND o5.category_id = 4) 

好運。