Как преобразовать одну строку в один столбец?
Как преобразовать столбцы одной строки в одну строку каждый?
Имея данные в таблице, как показано ниже:
+------+------+------+------+
| 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
утверждение выше.