mysql выбирает динамические значения строк в качестве имен столбцов, другой столбец в качестве значений
У меня есть устаревшая таблица с пользовательской информацией (которая все еще активно используется), и я не могу изменить структуру -
id name value
------------------------------
0 timezone Europe/London
0 language en
0 country 45
0 something x
1 timezone Europe/Paris
1 language fr
1 country 46
timezone / language / country и т. д. являются только примерами имен, они могут быть переменными / нет конечного списка, кроме уникального в строках этого столбца
Мне нужен совместимый с MySQL SQL-запрос, который бы возвращал -
id timezone language country something
---------------------------------------------------
0 Europe/London en 45 x
1 Europe/Paris fr 46
Я просмотрел различные ответы о потоке стека, касающиеся взлома функциональности сводной таблицы в MySQL, и похоже, но ни один из них, похоже, не соответствует этому случаю использования псевдонима имени переменного столбца из уникальных значений строки из столбца той же таблицы. Хотя у меня было мало сна, поэтому все они стали немного размытыми, заранее извиняюсь.
Закрыть, я мог бы найти будет использовать подготовленные заявленияhttps: //stackoverflow.com/a/986088/83017 который сначала получит все возможные / уникальные значения из столбца имени и создаст запрос, использующийCASE WHEN
и / или несколько субSELECT
илиJOIN
по тем же запросам таблицы.
Альтернативы, которые я могу придумать, заключаются в том, чтобы получить все строки для этого идентификатора пользователя и обработать их в самом приложении в цикле for, или попытаться ограничить имена конечным количеством и использовать sub-SELECT
S /JOIN
s. Однако этот второй вариант не идеален, если добавить новое имя, и мне придется вернуться к этому запросу.
Пожалуйста, скажи мне, что я пропустил что-то очевидное