我正在调试一个巨大的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
如果我需要再次做类似的事情,那么对于将来的参考文献会有用。
答案 0 :(得分:1)
如果按顺序选择表格,并添加名称为
的间隔列,该怎么办?即。
select 'table1', t1.*, 'table2', t2.*, 'table3', t3.*
...
至少在这种情况下,您无需为特定列命名。
答案 1 :(得分:0)
show tables;
desc <tablename>;
答案 2 :(得分:0)
答案 3 :(得分:0)
为什么不使用相同的点符号而不是模糊的下划线来将表与列名分开。只需将别名包含在后面的刻度中。例如:
SELECT students.id `students.id` FROM students;