我有两个联合表:
SELECT table1.*, table2.* FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.t1_id
问题:在查询结果中,id将始终从SELECT语句中定义的辅助表中获取?
例如:
如果我使用select t1.*, t2.*
- 结果ID将为t2.id
如果我使用select t2.*, t1.*
- id将是t1.id。
使用'合并'结果是好的做法,还是应该避免歧义,并且始终严格定义列?
答案 0 :(得分:1)
不,除非您使用自然连接(table1 inner join table2 using(column)
),否则sql查询将返回所有表中具有相同名称的所有列,而不仅仅是最后一个列。
如果使用某种将结果存储在关联数组中的组件,那么这些组件通常只使用字段名作为键,因此它们仅返回具有相同名称的那些值的最后一列值
但是,如果要在数据库中返回多个具有相同名称的列,则使用别名是一个不错的选择。
答案 1 :(得分:0)
我的建议是使用带有别名的tablename并像这样使用。最好的做法是运行query.Mention你的列名,即使它有很多列。您可以订购显示器。
SELECT t1.columnName1, t2.columnName2 FROM tablename1 t1 INNER JOIN tablename2 t2 ON t1.id = t2.id