MySQL: как выбрать столбец по номеру? - PullRequest
0 голосов
/ 21 сентября 2011

Я пишу программу, и мне нужно SELECT имена столбцов по номеру, а не по имени.

То есть, скажем, атрибуты моей таблицы:

SSN, FirstName, LastName, MiddleName, Address, City, State, Zip

Как я могу выбрать данные только из столбцов 0 (SSN), 1 (FirstName), 2 (LastName), 6 (State)

Есть ли способ сделать это, не углубляясь в information schema?

Ответы [ 3 ]

4 голосов
/ 21 сентября 2011

Вы должны пересмотреть свой дизайн. Таблица может быть изменена, она может развиваться, порядок столбцов очень изменчив. Вы НЕ должны жестко кодировать номера столбцов.


ДОПОЛНЕНИЕ

Под "эволюцией" и "переменчивостью" я не подразумеваю, что ядро ​​базы данных может перемещать их. Это довольно много исправить. Нет, я имею в виду, что потребности могут измениться в будущем, и дизайн таблицы может быть обновлен. В будущем будет проще адаптировать ваш старый код, если вы укажете фактические имена столбцов, а не порядок расположения столбцов. Подумайте о позиции столбца как о позиции строки: не ожидайте определенного порядка в результате, основанного на порядке ввода, а скорее сделайте ваш запрос даст вам нужный вам порядок.

1 голос
/ 21 сентября 2011

Хорошо, не делайте этого, но, если вам действительно нужно это сделать, вы можете использовать COLUMNS.ORDINAL_POSITION в информационной схеме.

0 голосов
/ 21 сентября 2011
SELECT `0`,`1`,`2`,`6` FROM `table` ORDER BY `ssn`
...