2010-10-07 70 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;