2010-04-07 122 views
14

我想要做這樣的事情:MySQL的SELECT AS - 追加所有字段名

SELECT table.id AS prefix_id, table.name AS prefix_name 

...並前綴動態地添加到所有字段名,而不是手動選擇他們所有的(即SELECT table.* AS prefix_*或其他)

希望我已經準確地描述了這一點。有什麼想法嗎?

編輯

要清楚,我問的原因是爲了確保我的查詢結果中包含從每個表我打電話,即使有重複的字段名每列。例如,我可能有一個包含大量字段的表,這意味着我不想手動爲所有字段進行別名。此外,如果3個表有一個名爲name的字段,我的結果將不會包含三個name結果;它會有一個。 我想避免與我的列名稱模糊

+0

什麼是前綴的目的是什麼?我想我有一個想法,但這取決於你的問題的背景。 – JohnFx 2010-04-07 18:55:49

+0

如果我從兩個表中提取信息,並且它們都具有'id'索引和'name'列,則它不會從兩個表中返回結果。 – jay 2010-04-07 18:58:03

+0

編輯問題*希望*更有幫助。 – jay 2010-04-07 19:04:13

回答

0

當您參考結果時,可以通過tablename.column引用每列。因此,您有一個附加到每個列名稱的默認前綴。

SELECT table.id,table.name,other.name FROM table,other Where other.name = table.name; 
0

我可以想像的情況下,如果你有,你需要從單一的SQL查詢來填充列表中的多個數據模型,這可能是有用的。

應該可以使用DESCRIBE在之前,這些表SHOW柱選擇查詢。這樣,你就知道每個表的所有字段名稱。儘管如此,這對於任何潛在的字段名衝突都沒有幫助。

我不打算評論這是否是個好主意。每個開發者都必須決定在靈活性,懶惰和良好實踐之間劃清界限。

0

在mysqli的,你可以使用PHP函數

mysqli_fetch_fields()

爲fieldinformations - 所以你得到的每一個表名collumn