gpt4 book ai didi

php - 如何访问 MySQL LEFT JOIN 查询中的两个同名列?

转载 作者:行者123 更新时间:2023-11-29 01:34:01 25 4
gpt4 key购买 nike

我有两个表。

表_x:

id    INT(11)
tag INT(11)

表格标签:

id    INT(11)
name VARCHAR(255)

然后我使用 PHP 执行以下查询:

SELECT * FROM table_x LEFT JOIN table_tags ON table_x.tag = table_tags.id

唯一的问题是:如何访问结果中的 table_x.idtable_tags.id

这是 PHP 代码:

$query = "SELECT * FROM table_x LEFT JOIN table_tags ON table_x.tag = table_tags.id";
$results = mysql_query($query);

while($row = mysql_fetch_array($results))
{
// how do I now access table_x.id and table_tags.id ???
}

最佳答案

您在列列表中命名列:

SELECT 
table_x.id AS x_id,
table_tags.id AS tag_id,
other, columns, here
FROM table_x LEFT JOIN table_tags
ON table_x.tag = table_tags.id

一般来说,明确命名要返回的列而不是依赖 * 被认为是一种很好的形式(如果底层表结构发生变化,这可能会导致列的实际编号、顺序和名称发生变化)。同时,您可以在结果集中使用新名称为列别名以便于使用(AS 关键字在大多数 SQL 方言中是可选的)。

更新:OP 在评论中声明他必须使用“*”。虽然不推荐这样做,但您可以这样做:

SELECT 
table_x.id AS x_id,
table_tags.id AS tag_id,
*
FROM table_x LEFT JOIN table_tags
ON table_x.tag = table_tags.id

它结合了您想要的命名列和(坏的)“*”技术。您的列将包含在结果集中两次,一次是在前两个列位置,一次是在列列表中的常规位置。值将相同。

关于php - 如何访问 MySQL LEFT JOIN 查询中的两个同名列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2527090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com