2010-10-07 132 views
9

我目前正在調試一個巨大的MySql調用,它加入了大量共享列名的表,如id,created_at等。我開始挑選它,但我想知道是否有一種方法做類似:MySQL顯示錶名與列

SELECT * AS table.column_name FROM table1 LEFT JOIN etc etc etc... 

代替不必單獨名稱,如列:

SELECT table1.`column2' AS 'NAME', table1.`column3` AS ... 

它肯定會與加快調試過程中,如果有一個辦法做到這一點幫助。

謝謝。

編輯:

感謝迄今答案。他們不完全是我要找的,我想我的問題是有點含糊,所以我就舉一個例子:

假設你有這個安裝在你的MySQL架構:

表:學生 字段:INT ID | INT school_id | VARCHAR

表:學校 領域:INT ID | INT

學生包括:

1 | 1 | "John Doe" 

學校包括:

1 | "Imaginary School One" 

做MySQL的電話「SELECT * FROM學生LEFT JOIN學校ON(students.school_id = schools.id) 「將產生:

id | school_id | name  | id | name 

1 | 1   | "John Doe" | 1 | "Imaginary School One" 

我們知道並且我們知道第一個Id和Name列是指學生表,第二個Id和Name是指學校表,因爲數據集非常小而且其命名毫不含糊。但是,如果我們必須處理包含多個左連接和具有相似名稱的列的結果集,那麼它將開始變得難以閱讀,並且通常您必須通過遵循連接來追蹤它。我們可以開始做這樣的事情

SELECT school.name AS 'school_name', etc etc etc... 

但是,令人難以置信的獲得不切實際的,一旦你開始處理大型數據集。

我在想,但如果有返回結果集,其中的列名應該是這樣的,而不是一個辦法:

students.id | students.school_id | students.name | schools.id | schools.name 

,如果我需要再次做同樣的事情這將是未來的引用有用。

+0

偉大的問題。我只是嘗試同樣的事情,但無法找到答案。 :-( – 2015-07-09 02:33:40

回答

1

如果您按順序選擇表格並添加一個帶有名稱的間隔列,該怎麼辦?

select 'table1', t1.*, 'table2', t2.*, 'table3', t3.* 
... 

至少這樣你不必說出特定列。

0

你的意思是什麼?

show tables; 
desc <tablename>; 
0

如果您還想要將表名與列名一起返回,則可以使用CONCAT函數。

例:

SELECT CONCAT('tableName', field) FROM tableNAme 

讓我們知道,如果這是你在找什麼。

+0

排序。我已經編輯了主要問題,試圖更好地解釋它,如果它有幫助。 – Matthew 2010-10-07 22:40:26

0

爲什麼不使用相同的點符號而不是用於將表與列名分開的模糊下劃線。只需將別名附加在備註中即可。例如:

SELECT students.id `students.id` FROM students;