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


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'];
}

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

我已经为用户 id 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