SELECT * FROM `product` left join category on product.category_id = category.id
此查询正常。但问题是,产品表和类别表都有名为“name”和“id”的字段。因此,当我获取此查询的结果时,它只给我一个名称和一个id,但我想要id和name。
如何在不重命名字段的情况下执行此操作? 是否可以使用自定义名称返回,例如product_name和category_name?
答案 0 :(得分:6)
您可以在字段中添加别名:
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
答案 1 :(得分:5)
使用“AS”关键字,如
SELECT product.id AS pid, category.id AS cid ... FROM `product` left join category on product.category_id = category.id
答案 2 :(得分:3)
将别名与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
答案 3 :(得分:2)
SELECT p.*,c.* FROM product p LEFT JOIN category c on p.category_id = c.id;
答案 4 :(得分:2)
试试这个:
SELECT product.id AS productid,
category.id AS categoryid, ...
FROM `product` left join category
on product.category_id = category.id
答案 5 :(得分:0)
我在Node.js项目中使用MySQL时遇到了类似的问题。
我发现如果您仍想使用select *
而不是列出所有列并使用别名,则以下方法有效:
SELECT *, category.id AS cId, category.name AS cName
FROM product LEFT JOIN category ON product.category_id = category.id
换句话说,只需为具有冲突名称的联接列创建别名。您不需要在其他列或表名上使用别名。