MySQL форматирует как столбцы, а не строки - PullRequest
0 голосов
/ 27 октября 2009

Используя MySQL Server, у меня есть структура таблицы как:

(Table test)

id     Name

1     "test1"
2     "test2"
3     "test3"

Когда я выполняю следующий запрос:

Select name from test

результаты:

"test1"
"test2"
"test3"

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

"test1" "test2" "test3"

Ответы [ 2 ]

2 голосов
/ 27 октября 2009

Вообще говоря, лучше отформатировать вывод в прикладном слое. Представьте, что в вашей таблице 728003 уникальных значения в столбце «имя». Ваш результат будет необычайно широким.

Однако, если вы действительно хотите это сделать и у вас есть объединяющий столбец для группировки, вы можете сделать:

SELECT unifying_column, GROUP_CONCAT(DISTINCT name) FROM test
GROUP BY unifying_column;

пс, group_concat может содержать только ограниченное количество символов


Добавление

Единственный способ сделать это с несколькими столбцами - это что-то вроде этого (а - это ужасный удар):

SELECT SUBSTRING_INDEX(nlist,',',1) AS col1,
       SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',2),',',-1) AS col2,
       SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',3),',',-1) AS col3,
       SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',4),',',-1) AS col4,
       SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',5),',',-1) AS col5,
       SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',6),',',-1) AS col6,
       SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',7),',',-1) AS col7,
       SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',8),',',-1) AS col8,
       SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',9),',',-1) AS col9,
       SUBSTRING_INDEX(nlist,',',-1) AS col10
FROM       
    (SELECT unifying_column, GROUP_CONCAT(DISTINCT name LIMIT 10) AS nlist FROM test
      GROUP BY unifying_column) AS subtable;

Вышеуказанное не проверено и может содержать синтаксические ошибки. Я также не уверен, что это могло бы сделать с дополнительными столбцами, если есть менее 10 имен.

0 голосов
/ 27 октября 2009

Зачем вам нужно, чтобы данные возвращались таким образом из базы данных?

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

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