2016-04-07 2 views
0

У меня есть старая версия MySQL (4.0) и не могу использовать Group_Concat или хранимые процедуры. Кто-нибудь знает, как я мог бы объединить эти строки:Group_concat в старой версии MySQL

xxx || yyy  || zzz 
xxx || abc  || eee 
vvv || otherstuff || otherstuff 
vvv || otherstuff || otherstuff 

Для того, чтобы быть так:

xxx || yyy || zzz || abc || eee 

, где каждая строка сгруппирован по идентификатору (здесь: ххх, VVV, ....)? Я некоторое время занимался этой проблемой ...

+1

ли '' || указать новый столбец или строка разделитель? Пожалуйста, отредактируйте свой вопрос. Если вы хотите, чтобы конкатенация строк использовала 'CONCAT_WS' и переменные. – lad2025

+0

Обновление. Simples. – Strawberry

+0

@ lad2025 || является разделителем столбцов – Strawberry

ответ

2

Вы должны иметь возможность просто заменить keyword_ids на колонку, которую вы хотите выполнить. http://www.experts-exchange.com/questions/20955939/Mysql-group-concat-alternative-in-3-23-x.html

SELECT @prev_item_id := NULL; 

SELECT MAX(@keyword_ids := IF(@prev_item_id = item_id, CONCAT_WS(',',  
    @keyword_ids, keyword_ids), keyword_ids)), 
     @prev_item_id := item_id 
FROM mytable 
GROUP BY item_id; 
+0

Хорошее решение, похоже, отлично работает, теперь мне нужно адаптировать его в Java с несколькими запросами. Если у вас есть какие-либо идеи, я с радостью их услышу, так как он не принимает два запроса * String *. Благодаря! – pathat0r

+0

@ pathat0r Если решение выше работает, то, по-видимому, его можно переписать следующим образом: 'SELECT MAX (@keyword_ids: = IF (@prev_item_id = item_id, CONCAT_WS (',', @keyword_ids, keyword_ids), keyword_ids)) , @prev_item_id: = item_id FROM mytable , (SELECT @prev_item_id: = NULL) vars GROUP BY item_id; ' – Strawberry

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