#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 Вы имеете в виду, что псевдонимы должны быть заключены в кавычки? это шаблон, а не запрос, я уверен, что на практике имена будут отличаться.