想象一下,我有以下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
吗?
答案 0 :(得分:6)
长答案:PHP的数组索引必须是唯一的。这样,最后一个类似名称列将获得优先权。
如果结果的两列或多列具有相同的字段名称,则最后一列将优先。要访问同名的其他列,必须使用列的数字索引或为列创建别名。对于别名列,您无法使用原始列名访问内容。
但是,您可以使用别名来解决此问题。
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