sql левое соединение, при котором вы объединяете экземпляры полей правой стороны в один результат столбца csv

#mysql #left-join

#mysql #левое соединение

Вопрос:

У меня есть sql left join, где для каждого соединения есть несколько обращений с правой стороны. Вместо этого, если возвращать строку для каждого совпадения с правой стороны, я хотел бы вернуть одну строку, в которой несколько совпадений с правой стороны объединяются в csv [результат, разделенный запятой].

 -- instead of this that produces a left.id row for every associated tag entry . . .
select left.id, left.name, right.tag from support_request left 
join support_request_tags right on left.id = right.support_request_id

-- need something like this that produces one left.id row with csv column of all associated tag entries . . .
select left.id, left.name, right.<csv list of all associated tags ???> from support_request left 
join support_request_tags right on left.id = right.support_request_id
  

Ответ №1:

 SELECT left.id, 
       left.name, 
       GROUP_CONCAT(right.tag) AS tags_CSV_list 
FROM support_request left 
JOIN support_request_tags right ON left.id = right.support_request_id
GROUP BY left.id, 
         left.name;
  

Комментарии:

1. @nbk Вы имеете в виду, что псевдонимы должны быть заключены в кавычки? это шаблон, а не запрос, я уверен, что на практике имена будут отличаться.