Как объединить данные из нескольких столбцов в один? [Запрос модели списка адресов]

У меня этот запрос

SELECT t1.categoryid AS lev1, t2.categoryid as lev2, t3.categoryid as lev3, t4.categoryid as lev4
FROM category AS t1
LEFT JOIN category AS t2 ON t2.parent = t1.categoryid
LEFT JOIN category AS t3 ON t3.parent = t2.categoryid
LEFT JOIN category AS t4 ON t4.parent = t3.categoryid
WHERE t1.categoryid = 4149418031;

Вот как результат выглядит как

enter image description here

Как вы можете видеть, он возвращает четыре столбца. Я хочу объединить отдельные данные всех четырех в один столбец.

Я просмотрел похожие вопросы, но ни один из них не имеет Left Joins в своем запросе.  Я знаю, что это возможно, используя union, но я боюсь.

Спасибо.

Ответ 1

Как вы сказали, вы можете использовать UNION по результатам вашего запроса. В оставшейся части ответа я покажу вам решение с использованием CTE, которое является стандартным синтаксисом SQL, доступным во многих системах, но, к сожалению, не в MySQL. Однако, чтобы преобразовать этот запрос для MySQL, вы можете посмотреть следующий ответ: Как вы используете" WITH " в MySQL?

WITH query AS (
  SELECT t1.categoryid AS lev1, t2.categoryid as lev2, t3.categoryid as lev3, t4.categoryid as lev4
  FROM category AS t1
  LEFT JOIN category AS t2 ON t2.parent = t1.categoryid
  LEFT JOIN category AS t3 ON t3.parent = t2.categoryid
  LEFT JOIN category AS t4 ON t4.parent = t3.categoryid
  WHERE t1.categoryid = 4149418031)
SELECT lev1 AS category_value FROM query
  UNION
SELECT lev2 AS category_value FROM query
  UNION
SELECT lev3 AS category_value FROM query
  UNION
SELECT lev4 AS category_value FROM query;