10

考虑:

SELECT * FROM `product` left join category on product.category_id = category.id

此查询工作正常。但问题是,product 表和 category 表都有名为“name”和“id”的字段。所以当我获取这个查询的结果时,它只给了我一个名字和一个 ID,但我想要 ID 和名字。

我怎样才能做到这一点而不必重命名字段?是否可以使用product_namecategory_name等自定义名称返回?

4

6 回答 6

9

您可以为字段添加别名:

SELECT
    a.id,
    a.name,
    a.category_id,
    b.id AS catId,
    b.name AS catName
FROM
    product AS a
LEFT JOIN
    category AS b ON a.category_id = b.category.id
于 2012-05-10T08:33:45.063 回答
6

使用“AS”关键字,如:

SELECT product.id AS pid, category.id AS cid ... FROM `product` left join category on product.category_id = category.id
于 2012-05-10T08:33:17.113 回答
4

使用带有AS关键字的别名:

SELECT p.id AS product_id, p.name AS product_name, c.id AS cat_id, c.name AS cat_name
FROM `product` AS p
LEFT JOIN category AS c ON p.category_id = c.id
于 2012-05-10T08:33:55.223 回答
2
SELECT p.*,c.* FROM product p LEFT JOIN category c on p.category_id = c.id;
于 2012-05-10T08:33:54.780 回答
2

试试这个:

SELECT product.id AS productid, 
       category.id AS categoryid, ...
FROM `product` left join category 
       on product.category_id = category.id
于 2012-05-10T08:34:58.760 回答
2

我在 Node.js 项目中使用 MySQL 时遇到了类似的问题。

我发现,如果您仍想使用select *而不是列出所有列并使用别名,则可以使用以下方法:

SELECT *, category.id AS cId, category.name AS cName 
FROM product LEFT JOIN category ON product.category_id = category.id

换句话说,只需为名称冲突的连接列创建别名。您不需要其他列或表名上的别名。

于 2016-09-26T18:22:17.993 回答