2017-01-11 10 views
0

Я пытаюсь обновить поле с выраженным значением нескольких строк.mysql group_concat как значение для оператора set

так что есть таблица: с

ID | single_value 
1 | hello 
2 | something 
1 | world 
42 | another someting 
1 | bye bye 

....

и в таблице B:

ID | concated_field 
1 | '' (i.e. empty) 
2 | '' 
3 | '' 
4 | '' 

как результат, таблица б должна быть:

ID | concated_field 
1 | hello, world, bye bye 
2 | something 
3 | '' 
42 | another something 

...

мой запрос:

update data.table b, data.content a 
    set b.concated_field= (
     select group_concat(single_value separator ', ') from data.table 
    ) 
    where b.ID= a.ID; 

, но мой результат что-то вроде:

ID | concated_field 
1 | hello, something, world,another something, bye bye 
2 | '' 
3 | '' 
42 | '' 

...

кажется, что, когда часть неправильно, но я не понимаю. Я серьезно ищу помощь! :)

+1

Не сохранять CSV в колонке http://stackoverflow.com/questions/41304945/best-type-of-indexing-when-there-is-like-clause/41305027#41305027 HTTP://stackoverflow.com/questions/41215624/sql-table-with-list-entry-vs-sql-table-with-a-row-for-each-entry/41215681#41215681 – e4c5

+0

Почему вы хотите сохранить это 'concated_field 'в вашей базе данных? –

ответ

1

Вам нужно использовать WHERE и GROUP BY в подзапросе, чтобы достичь ожидаемого результата.

update data.table b, data.content a 
    set b.concated_field= (
     select group_concat(single_value separator ', ') 
     from data.table 
     where data.table.ID = b.ID 
     group by data.table.ID 
    ) 
    where b.ID= a.ID; 
+0

Привет, Хакан, большое вам спасибо! он работает по назначению! – Jaymi

 Смежные вопросы

  • Нет связанных вопросов^_^