我有一张这样的表:
**id name parent_id**
1 X 2
2 Y 2
3 Z 1
4 A 5
5 B 6
6 C 1
I want output look like this:
**name *parent name***
X Y
Y Y
Z X
A B
B C
C X
是否可以使用JOIN进行一次查询?
答案 0 :(得分:3)
您需要执行自我加入:
SELECT child.name AS `name`, parent.name AS `parent name`
FROM my_table AS child JOIN my_table AS parent ON parent.id = child.parent_id
在sqlfiddle上查看。
答案 1 :(得分:0)
select son.name as name, father.name as parent_name from table_name as son left join table_name as father ON son.parent_id = father.id
答案 2 :(得分:0)
您可以使用JOIN执行此操作
示例:
SELECT
table.name
, parent.name as parent_name
FROM
table
LEFT JOIN
parent ON parent.parent_id = table.parent_id
WHERE
table.visible = 1
之后,您将通过返回的项目数组(数组或对象 - 依赖于您使用的MySQL抽象)处理来自查询的响应,在您自己的数组中保存所需的数据,或者只是将此数组编码为JSON
注意:我不知道您需要什么,但如果您希望后者能够识别一条记录,最好在结果中包含table.id
。
答案 3 :(得分:0)
假设你有两张桌子:
product
product_parent
然后,您运行如下查询:
SELECT product.name, product_parent.name
FROM product
INNER JOIN product_parent
ON product.product_parent_id=product_parent.id