Как получить названия столбцов из запроса на выборку в MySQL? - PullRequest
2 голосов
/ 20 августа 2011

Можно ли получить имена столбцов с помощью запроса в MySQL? Например, у меня есть запрос SELECT:

SELECT name AS 'name', surname AS 'col1', last_name AS 'col2' FROM tb_people;

Итак, я хочу получить «Только с одним запросом SQL», например:

    Columns or alias of my query
    --------
    name
    col1
    col2

Я пытаюсь что-то похожее на:

SHOW COLUMNS (SELECT name AS 'name', surname AS 'col1', last_name AS 'col2' FROM tb_people) 

А с

DESCRIBE (SELECT name AS 'name', surname AS 'col1', last_name AS 'col2' FROM tb_people) 

Но они возвращают ошибки SQL.

Ответы [ 2 ]

1 голос
/ 20 августа 2011

Почему бы вам не сделать это в вашем приложении?MySql API на большинстве языков предоставляет функции для извлечения всех видов информации о полях, включая имя, из результатов, возвращаемых MySql.Например, в PHP вы можете использовать mysql_fetch_field() для результатов, возвращаемых mysql_query(), для извлечения информации о поле.

Вот как это делается в PHP, в используемом языке должны быть эквивалентные функции:

$res = mysql_query( "SELECT name AS 'name', surname AS 'col1', last_name AS 'col2' FROM tb_people" );
for( $i = 0; $i < mysql_num_fields( $res ); ++$i ) {
     $fieldInfo = mysql_fetch_field( $res, $i );
     echo $fieldInfo[ 'name' ].'<br />';
}

Результаты:

name
col1
col2
0 голосов
/ 20 августа 2011

Эй, я успешно использовал это в прошлом, но я не знаю, совместимо ли это со всеми версиями:

SELECT name FROM syscolumns 
WHERE id = (SELECT id FROM sysobjects 
WHERE name= 'MyTableName') 
ORDER by colorder

Если вы установили сервер MySQL 5, вы можете легко обойти эту проблему:

use information_schema

SELECT * FROM information_schema.`COLUMNS` C limit 5 
WHERE table_name = 'your_table_name'

Ура!

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