MySQL объединяет значения строк как имена столбцов - PullRequest
0 голосов
/ 13 июня 2018

Я искал часы, но не нашел решения для своей проблемы.

У меня есть запрос, который приводит к таблице из 2 столбцов, например:

key            value
str01          color
str03          size
str04          length
str07          width
str08          height
str09          propertyXY

И еще одна таблицас именами столбцов от str01 до str10.

id    str01    str02    str03    str04    ...
1     blue     NULL     big      123m           

Возможно ли получить следующее с одной очередью?

id    color    size    length    ...
1     blue     big     123m           

(обратите внимание, что str02 отсутствует в результате первой очереди)По сути, я хочу динамически переименовать имена столбцов окончательного выходного запроса в соответствии с упомянутым выше подзапросом.

Было бы замечательно, если бы у кого-то была идея, как к этому подойти.

1 Ответ

0 голосов
/ 13 июня 2018

Вы можете преобразовать свой столбец, как показано ниже, кроме невозможного.

mysql> select id,
    -> str01 as color,
    -> str02 as property_1,
    -> str03 as size,
    -> str04 as length,
    -> str05 as property_2,
    -> str06 as property_3,
    -> str07 as width,
    -> str08 as height,
    -> str09 as propertyXY,
    -> str10 as property_4
    -> from tx2;
+------+-------+------------+------+--------+------------+------------+-------+--------+------------+------------+
| id   | color | property_1 | size | length | property_2 | property_3 | width | height | propertyXY | property_4 |
+------+-------+------------+------+--------+------------+------------+-------+--------+------------+------------+
|    1 | blue  | NULL       | big  | 123m   | NULL       | NULL       | NULL  | NULL   | NULL       | NULL       |
+------+-------+------------+------+--------+------------+------------+-------+--------+------------+------------+
1 row in set (0.00 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...