SQL SELECT语句 - 相同的列名

时间:2014-02-10 14:56:48

标签: php mysql sql select

想象一下,我有以下SELECT语句过于简单。

SELECT a.Name, b.Name FROM table a LEFT JOIN table b ON a.ID=b.TID

使用php我运行以下内容:

while ($result = mysql_fetch_array($results)) {

   echo $result["Name"];

}

这将给我b.Name的结果。我知道我可以使用a.Name AS aName, B.Name AS bName但是,这可能会使您查询较长并且使用a.*的内容复杂化。我尝试使用$result["a.Name"]但它不起作用。我知道这有效$result[0]但是如果没有复杂化的话,这并不总是可行的。

我还有其他方式可以展示a.Name吗?

2 个答案:

答案 0 :(得分:6)

答案很简单:没有。

长答案:PHP的数组索引必须是唯一的。这样,最后一个类似名称列将获得优先权。

  

如果结果的两列或多列具有相同的字段名称,则最后一列将优先。要访问同名的其他列,必须使用列的数字索引或为列创建别名。对于别名列,您无法使用原始列名访问内容。

source

但是,您可以使用别名来解决此问题。

SELECT a.Name as aName, b.Name as bName FROM table a LEFT JOIN table b ON a.ID=b.TID

然后您可以使用$result["aName"]$result["bName"]

访问两个表中的名称

答案 1 :(得分:2)

根据您的要求,您可以考虑将查询分为两个提取语句。这将允许您拥有重复的列名。

SELECT a.* FROM table a LEFT JOIN table b ON a.ID=b.TID

SELECT b.* FROM table b LEFT JOIN table a ON a.ID=b.TID