PHP MySQL内部连接具有相同的列名[重复]

Posted

技术标签:

【中文标题】PHP MySQL内部连接具有相同的列名[重复]【英文标题】:PHP MySQL inner join with same column name [duplicate] 【发布时间】:2014-08-20 21:39:32 【问题描述】:
$q = $db->query("SELECT * 
        FROM people p
        INNER JOIN job j           
        ON p.job_id = j.id
        WHERE p.id = '$id'
        ORDER BY j.id ASC");
    $maps = array();
    while($row = mysqli_fetch_array($q)) 
        $product = array(
            'id' => $row['id'],
            'job_id' => $row['j.id']
        )
    

餐桌上的人

id

表格作业

id

在上面的代码中,我在两个表之间进行内部连接。两个表都有一个名为id 的列,有没有办法在我的while loop 中区分两者?

我已经尝试了上述方法,但 $row['j.id'] 不起作用,如果我这样做 $row['id'],那么它会同时写入具有相同值的 idjob_id

【问题讨论】:

您需要在选择数据时使用别名,最好只选择需要的而不是*。 在其中一列上添加“as [column name]”。这样您就可以指定您希望它以不同的方式命名。 从技术上讲,您还可以通过以数字模式获取并通过索引引用它们来访问这两个 ID 值......不过,我不推荐它。 php & MYSQL: How to resolve ambiguous column names in JOIN operation?的可能重复 【参考方案1】:
$q    = $db->query("SELECT *, j.id as jid, p.id as pid 
        FROM people p
        INNER JOIN job j           
        ON p.job_id = j.id
        WHERE p.id = '$id'
        ORDER BY j.id ASC");
$maps = array();
while ($row = mysqli_fetch_array($q)) 
    $product = array(
        'id'     => $row['pid'],
        'job_id' => $row['jid']
    );

【讨论】:

以上是关于PHP MySQL内部连接具有相同的列名[重复]的主要内容,如果未能解决你的问题,请参考以下文章

具有相同列名的 MySQL 连接表

群答疑20210525-1MySQL列名相同,出现两列问题

如何将两个 DataTable 与内部连接连接在一起

mysql中 union连接

SQL-union

Mysql-DQL