2011-08-20 41 views
2

是否有可能使用MySQL中的查询来获取列名?例如,我有一个SELECT查询:如何从MySQL中的select查询中获取columnames?

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错误。

+0

为什么需要这个? – Karolis

回答

0

嘿,我已经成功地在过去使用的,但我不知道这是否与所有版本兼容:

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' 

干杯!

+0

你的答案是关于真正的表列名称,但他想获得由特定查询生成的列名或别名。 – Karolis

+0

第一个含有syscolumns和sysobjects的查询是MSSQL所具有的,而不是MySQL – shesek

+0

谢谢您的回答,在efect中,我指的是别名而不是phisycal列。 – theaibo

1

你为什么不在你的应用程序中这样做?大多数语言中的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

谢谢你的回答,但在我的问题中,我试图说没有任何服务器语言。所以,这是PHP开发人员的有效答案。 – theaibo