Mysql暧昧列

时间:2014-08-16 05:28:08

标签: php mysql

假设我有这样的查询

 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如果找到任何模糊列,请使用主表列??

1 个答案:

答案 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