考虑:
SELECT * FROM `product` left join category on product.category_id = category.id
此查询工作正常。但问题是,product 表和 category 表都有名为“name”和“id”的字段。所以当我获取这个查询的结果时,它只给了我一个名字和一个 ID,但我想要 ID 和名字。
我怎样才能做到这一点而不必重命名字段?是否可以使用product_name和category_name等自定义名称返回?
考虑:
SELECT * FROM `product` left join category on product.category_id = category.id
此查询工作正常。但问题是,product 表和 category 表都有名为“name”和“id”的字段。所以当我获取这个查询的结果时,它只给了我一个名字和一个 ID,但我想要 ID 和名字。
我怎样才能做到这一点而不必重命名字段?是否可以使用product_name和category_name等自定义名称返回?
您可以为字段添加别名:
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
使用“AS”关键字,如:
SELECT product.id AS pid, category.id AS cid ... FROM `product` left join category on product.category_id = category.id
使用带有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
SELECT p.*,c.* FROM product p LEFT JOIN category c on p.category_id = c.id;
试试这个:
SELECT product.id AS productid,
category.id AS categoryid, ...
FROM `product` left join category
on product.category_id = category.id
我在 Node.js 项目中使用 MySQL 时遇到了类似的问题。
我发现,如果您仍想使用select *
而不是列出所有列并使用别名,则可以使用以下方法:
SELECT *, category.id AS cId, category.name AS cName
FROM product LEFT JOIN category ON product.category_id = category.id
换句话说,只需为名称冲突的连接列创建别名。您不需要其他列或表名上的别名。