假设我有这样的查询
select id, company_id, name, type, number
from people as p
inner join company c on c.id = p.company_id
limit 10
并且在这里两个表都有名称列,name
不明确。
有没有办法不将它加到p.name
前面并按原样使用选择部分而不是前缀全部?
有没有办法告诉mysql如果找到任何模糊列,请使用主表列??
答案 0 :(得分:1)
您别无选择,只能使用表名指定它。请参阅 Manual 中的此说明。最后一行对于这个问题很重要。
您可以将默认数据库中的表称为tbl_name,或将db_name.tbl_name称为显式指定数据库。您可以将列引用为col_name,tbl_name.col_name或db_name.tbl_name.col_name。除非引用不明确,否则无需为列引用指定tbl_name或db_name.tbl_name前缀。
然后这个更具体,并使用术语' 必须'。
除非引用不明确,否则无需在语句中为列引用指定tbl_name或db_name.tbl_name前缀。假设表t1和t2每个都包含一个列c,并在SELECT语句中检索c,该语句同时使用t1和t2。在这种情况下,c是不明确的,因为它在语句中使用的表中不是唯一的。您必须使用表名为t1.c或t2.c来限定它,以指示您的表。同样,要从数据库db1中的表t和同一语句中的数据库db2中的表t中检索,必须将这些表中的列引用为db1.t.col_name和db2.t.col_name。
<强> Reference 强>