MySQL显示表名称以及列

时间:2010-10-07 19:35:39

标签: mysql

我正在调试一个巨大的MySql调用,该调用连接了大量共享列名称的表,例如id,created_at等。我开始将它分开但是我想知道是否有办法做类似的事情:

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 students LEFT JOIN schools 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

如果我需要再次做类似的事情,那么对于将来的参考文献会有用。

4 个答案:

答案 0 :(得分:1)

如果按顺序选择表格,并添加名称为

的间隔列,该怎么办?

即。

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

至少在这种情况下,您无需为特定列命名。

答案 1 :(得分:0)

你的意思是什么?

show tables;
desc <tablename>;

答案 2 :(得分:0)

如果您还要返回表名和列名,可以使用CONCAT函数。

示例:

SELECT CONCAT('tableName', field) FROM tableNAme

如果您正在寻找,请告诉我们。

答案 3 :(得分:0)

为什么不使用相同的点符号而不是模糊的下划线来将表与列名分开。只需将别名包含在后面的刻度中。例如:

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