MySQL显示表名和列名

10

我目前正在调试一个连接了大量表格的 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 Schema 中有以下设置:

table: students fields: INT id | INT school_id | VARCHAR name

table: schools fields: INT id | INT name

students 包含:

1 | 1 | "John Doe"

schools 包含:

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

如果我将来需要做类似的事情,这将对未来的参考有所帮助。


很棒的问题。我也在尝试同样的事情,但找不到答案。 :-( - Simon East
4个回答

2
如果您按顺序选择表格,并添加一个名为spacer的空列,会怎样呢?
select 'table1', t1.*, 'table2', t2.*, 'table3', t3.* 
...

至少这样你就不必命名具体的列。


(这句话涉及IT技术,意思是说可以通过某种方式来避免指定具体的列。)

0
为什么不使用相同的点符号来代替模糊的下划线来分隔表名和列名呢?只需用反引号括起别名即可。例如:
SELECT students.id `students.id` FROM students;

0

你的意思是这样的吗?

show tables;
desc <tablename>;

0

如果你想连表名一起返回,可以使用 CONCAT函数。

例子:

SELECT CONCAT('tableName', field) FROM tableNAme

请告诉我们这是否是您正在寻找的内容。


有点类似。如果有帮助的话,我已经编辑了主要问题以更好地解释它。 - Matthew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接