让mysql select语句返回完全限定的列名,如table.field

让mysql select语句返回完全限定的列名,如table.field,sql,mysql,Sql,Mysql,有没有一种方法可以让mysql select语句返回完全限定的列名,比如“table.field”,而不对每个字段使用AS 像这样: SELECT * FROM table1 LEFT JOIN table2 on table1.f_ID = table2.ID 结果是: “table1.ID”、“table1.name”、“table2.ID”、“table2.name”…不太可能。您可以编写一些动态SQL来实现这一点,但这并不简单。如果您真的需要动态SQL,请告诉我,我可以试着

有没有一种方法可以让mysql select语句返回完全限定的列名,比如“table.field”,而不对每个字段使用AS

像这样:

SELECT * 
FROM  table1  
LEFT JOIN table2 on table1.f_ID = table2.ID  
结果是:
“table1.ID”、“table1.name”、“table2.ID”、“table2.name”…

不太可能。您可以编写一些动态SQL来实现这一点,但这并不简单。如果您真的需要动态SQL,请告诉我,我可以试着做点什么。

在语句中使用完全限定的字段名将在结果集中产生完全限定的字段名

SELECT table1.ID, table1.name, table2.ID, table2.name
FROM table1 
LEFT JOIN table2 on table1.f_ID = table2.ID
我意识到你想要摆脱的负担是手工操作。但是,如果您的应用程序对数据库的布局有任何了解,那么它可以在应用程序中动态生成


只要我的2美分,你也可以这样写:

   SELECT table1.*, table2.*
     FROM table1 
LEFT JOIN table2 on table1.f_ID = table2.ID

不需要指定每一列,如果您想要所有列

如果您使用的是PHP,则可以使用PDO来获得此结果

$PDO->setAttribute(PDO::ATTR_FETCH_TABLE_name,true)


有关更多信息,请参阅。

选择表1.*,表1='我在SQLite3数据库上尝试了此操作,但没有完全限定列名。虽然OP询问了MySQL,但我认为这是值得注意的。@BenjaminOakes只有两个(SQLite)pragma,它们已被弃用。。。完整列名和短列名。这不适用于MySQL。您仍然可以获得列名,而不是table.column name。
select  table1.* , table1='<======'

        table2.* , table2='<======'

from  table1  

    left join table2 on table1.f_ID = table2.ID