Php 如果有两列同名,如何在左联接中选择一列?[MySql]

Php 如果有两列同名,如何在左联接中选择一列?[MySql],php,mysql,left-join,Php,Mysql,Left Join,我做了一个左连接,从数据库中的两个表中获取值。 查询如下: SELECT * FROM thread LEFT JOIN comments ON thread.id_thread = comments.id_thread WHERE id_type = '1' ORDER BY data DESC, hour DESC 然后我以这种方式输出值: <? while($row = mysqli_fetch_array($query)) { echo '<div class="co

我做了一个
左连接
,从数据库中的两个表中获取值。
查询如下:

SELECT *
FROM thread
  LEFT JOIN comments ON thread.id_thread = comments.id_thread
WHERE id_type = '1'
ORDER BY data DESC, hour DESC
然后我以这种方式输出值:

<?

while($row = mysqli_fetch_array($query))
{
echo '<div class="col-md-1"></div>';
echo '<div class="col-md-11">';
echo  $row['title'] ."<br><br>".$row['content']."<br><br>";
echo  $row['content_com'];
echo '<div class="col-md-2 pull-right">'. "date: ".$row['data']."<br>"."author: ".'<a href ="/user.php?id='.$row['username'].'">'.$row['username'].'</a>'.'</div>' ."<br><br>";
echo '<form role="form" action="commit.php" method="post"><div class="col-md-offset-1 col-md-9"><input class="form-control" type="text" name="comm"><input type="hidden" name="thread_id" value="'.$row['id_thread'].'"></div></form> <br><br><hr><br>';
echo '</div>';
}

mysqli_close($connect);
?>

然后在commit.php(表单操作)中:


使用表指定列名并将其命名为别名。
因此,
像以前一样为所有列选择*
,现在使用
thread.id\u thread
并将其别名为
mycl
。这将作为mycl提供,不再有名称冲突。

您可以使用“别名”或表名,然后指定要使用的列

SELECT T.*, comments.id_thread AS comment_thread_id
FROM thread T
LEFT JOIN comments 
    ON thread.id_thread=comments.id_thread 
WHERE id_type = '1' ORDER BY  data desc, hour desc

请参阅,
T
是表名的alis,线程,
T.
将从
thread
表中选择所有列,
comments.id\u thread
将只从表
comments
中获取列id,命名为
comment\u thread\u id
在使用别名/表名旁边,您也可以使用
using()
而不是
上的
,以加入表

SELECT T.*, comments.id_thread AS comment_thread_id
FROM thread T
LEFT JOIN comments 
    USING(id_thread) 
WHERE id_type = '1' ORDER BY  data desc, hour desc

这是两种方法之间区别的一个很好的解释:

两个表都有id\u thread字段,但我想要thread->id\u thread,它会给我注释->id_thread@kraven2g-首先,您不应该使用
SELECT*FROM…
。。。您应该指定所需的列。如果两列名称相同,请使用
作为
关键字,例如:
选择table1.col1,table1.col2…,table2.col1作为col1\u 2…
等等。我仍然需要所有其他列,这就是为什么我选择了SELECT*@kraven2g指定所有其他名称,然后尝试
选择*,thread.id\u thread作为mycl
。适用于大多数您乐于接受的发动机。既然您使用的是MySQLi,那么您应该研究
SELECT T.*, comments.id_thread AS comment_thread_id
FROM thread T
LEFT JOIN comments 
    ON thread.id_thread=comments.id_thread 
WHERE id_type = '1' ORDER BY  data desc, hour desc
SELECT T.*, comments.id_thread AS comment_thread_id
FROM thread T
LEFT JOIN comments 
    USING(id_thread) 
WHERE id_type = '1' ORDER BY  data desc, hour desc