mysql Выберите значения из нескольких столбцов в один столбец - PullRequest
0 голосов
/ 24 октября 2018

У меня есть таблица в базе данных, в которой есть несколько столбцов, содержащих данные одного и того же типа, эти значения могут быть равны нулю .Мне нужно выбрать каждое из ненулевых значений в один столбец значений, которые заботятся о идентичности строки, из которой они произошли.

Итак,для таблицы, которая выглядит следующим образом:

+---------+------+--------+------+
|   Id    | name  | v1    | v2   | 
+---------+------+--------+------+
|    1    | eko  | aa     |  bb  |
|    2    | agus | null   |  cc  |
|    3    | eko  | dd     |  null|
|    4    | budi | aa     |  null|
|    5    | siti | ff     |  gg  |
+---------+------+--------+------+

Я хочу выделить каждое из значений aa, bb, cc и т. д. в один столбец.Мои данные результатов должны выглядеть следующим образом:

+-------+-------+-------+
| id    | name  | v     |
+-------+-------+-------+
|  1    | eko   | aa    |
|  1    | eko   | bb    |
|  2    | agus  | cc    |
|  3    | eko   | dd    |
|  4    | budi  | aa    |
|  5    | siti  | ff    |
|  5    | siti  | gg    | 
+-------+-------+-------+

Я использую mysql .Есть ли метод для достижения этого в отношении производительности тоже?

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете просто использовать два запроса и использовать оператор объединения двух, чтобы добавить два набора:

Select id, v1 as v
From table 
where v1 is not null

union all

select id, v2 as v
from table
where v2 is not null

Но чтобы сделать это динамическим (любое число v ...), вам придетсяперебрать столбцы.Смотрите: mysql, перебирайте имена столбцов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...