2011-08-20 42 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