Как преобразовать одну строку в один столбец?

Как преобразовать столбцы одной строки в одну строку каждый?

Имея данные в таблице, как показано ниже:

+------+------+------+------+
| col1 | col2 | col3 | col4 |
+------+------+------+------+
|  a1  |  a2  |  a3  |  a4  |
+------+------+------+------+

Требуемый вывод: все значения в строке должны идти в одном столбце, как показано ниже.

+---------------+
|   All_cols    |
+---------------+
|  a1,a2,a3,a4  |
+---------------+

Как на картинке: здесь mytable всегда есть одна запись, поэтому мне нужен вывод, как показано ниже.

введите описание изображения здесь

хочу избежать ниже sql, так как требуется несколько объединений:

select a1.name from  accounts a1 where a1.id='658f3b73-8260-5a7a-ae7e-54c25deded36'

union

Select a2.name from accounts a1
left join accounts a2 on a1.id=a2.parent_id where a1.id='658f3b73-8260-5a7a-ae7e-54c25deded36'

union

Select a3.name from accounts a1
left join accounts a2 on a1.id=a2.parent_id
left join accounts a3 on a2.id=a3.parent_id where a1.id='658f3b73-8260-5a7a-ae7e-54c25deded36'

union

Select a4.name from accounts a1
left join accounts a2 on a1.id=a2.parent_id
left join accounts a3 on a2.id=a3.parent_id
left join accounts a4 on a3.id=a4.parent_id where a1.id='658f3b73-8260-5a7a-ae7e-54c25deded36'

union

Select a5.name from accounts a1
left join accounts a2 on a1.id=a2.parent_id
left join accounts a3 on a2.id=a3.parent_id
left join accounts a4 on a3.id=a4.parent_id
left join accounts a5 on a4.id=a5.parent_id where a1.id='658f3b73-8260-5a7a-ae7e-54c25deded36'

1 ответ

Вы могли бы сделать UNION on four single calls

SELECT col1 FROM mytable
UNION
SELECT col2 FROM mytable
UNION
SELECT col3 FROM mytable
UNION
SELECT col4 FROM mytable

будет выводить

Вы говорите, что

mytable always have one record.

Be aware that if you have more than one record, it's wise to use the same WHERE condition on each SELECT утверждение выше.

Другие вопросы по тегам