使用PHP在MySQL中加入JOIN后重复列名

时间:2014-07-22 23:29:50

标签: php mysql

考虑两个表:

t1          t2
A   B       A   C
------      -----
1   2       3   4

我运行此代码:

$q = mysql_query("SELECT * FROM t1 LEFT JOIN t2 ON 1=1");
print_r(mysql_fetch_all($q));

得到这个结果:

array(
  A => 3
  B => 2
  C => 4
)

在我试过的所有情况下,最新连接表的值都转到了数组(索引A)。问题是,我可以指望吗?
我知道别名,但如果我能知道Mysql + php在这种情况下的表现如何,对我来说会容易得多。谢谢。

2 个答案:

答案 0 :(得分:1)

假设您使用

mysql_fetch_assoc()

然后你可以指望它:

来自mysql_fetch_assoc

  

返回值

     

如果结果的两列或多列具有相同的字段名称,则   最后一列优先。访问的其他列   相同的名称,您需要使用数字索引访问结果   通过使用mysql_fetch_row()或添加别名。请参阅下面的示例   mysql_fetch_array()描述别名。

注意

请看红色方框。如果您为新项目编写新代码,请考虑转移到mysqli或PDO。并考虑将mysql_ *函数的弃用纳入现有项目中。

答案 1 :(得分:0)

您可以指定别名来提供帮助:

SELECT *,t1.a AS t1_a FROM ...

如果您在select子句中有操作,别名也会有帮助,例如:SUM(a * b)AS line_total