使用 Join 时,如何在 MYSQL 查询中查明正确结果,并且 2 个表具有同名字段?

How do I pinpoint correct result in MYSQL Query when using Join and the 2 tables have field with same name?

我有一个连接,连接的结果是正确的,但是我想显示一个变量,但它不是像$variable那样的变量格式,它的格式是$row['field'] , 但是,它没有显示正确的值,因为字段名称在两个表中。

有时显示左边,有时显示右边。我不知道如何强制显示我想要的那个。

所以例如我有这个查询:

SELECT
    user_table.*, user_groups.*
FROM
    user_table
LEFT JOIN user_groups ON user_groups.groupid = user_table.usergroup
WHERE
    user_table.client = "0"
AND user_table.usergroup != "1"
ORDER BY
    user_groups.name ASC

不打算每个字段都放,因为太多了,就几个来了解一下。

user_table:

userid, username, usergroup, fname, sname, company

user_groups:

groupid, name, userid

JOIN 的结果如下:

userid  username  usergroup  fname  sname   company  groupid  name   userid1
1129    whatever  2286       first  last    abc      2286     abc    0

然后我开始像这样回显所有字段:

while ($row=mysql_fetch_assoc($result)) {
    echo $row['username']." ".$row['userid']." ".$row['company']." ".$row['fname']." ".$row['sname']." ".$row['username'];
}

除用户标识外,所有数据都是正确的。它将使用零(0)而不是我想要的 1129。

我已经为用户标识 echo 尝试了以下所有方法:

$row['userid']
$row['userid0']
$row['userid1']
$row['userid[0]']
$row['userid[1]']
$row['userid'][0]
$row['userid'][1]

没有任何效果。它要么显示错误的结果,要么什么都不显示。

PHP 尝试将列名称映射到 key => value 对。如果有一列重名,那么你只会得到一个。

使用 AS 关键字 (http://www.w3schools.com/sql/sql_alias.asp) 映射 MySQL 中的第二个 userid 列,为第二个 userid 字段指定一个不同的名称。

SELECT
    user_table.*, user_groups.groupid, user_groups.name, user_groups.userid AS group_userid
FROM
    user_table
LEFT JOIN user_groups ON user_groups.groupid = user_table.usergroup
WHERE
    user_table.client = "0"
AND user_table.usergroup != "1"
ORDER BY
    user_groups.name ASC

然后您可以像这样访问这两个字段:

$row['userid']; // client.userid
$row['group_userid']; // user_groups.userid