mySQL自连接优雅
我的问题有点傻,但SQL从来都不是我喜欢的。 我有一个包含3列的简单表:mySQL自连接优雅,mysql,sql,Mysql,Sql,我的问题有点傻,但SQL从来都不是我喜欢的。 我有一个包含3列的简单表:id、name、parent\u id(指同一表中的id) 我只想获得相关结果,并将其显示在HTML页面中: ID/名称/父名称 我可以提出以下查询: select id, name, parent_id from fields union select a.id, a.name, b.name from fields a, fields b where b.parent_id = a.id; 并做了一些测试,但我发现它存
id、name、parent\u id
(指同一表中的id)
我只想获得相关结果,并将其显示在HTML页面中:
ID/名称/父名称
我可以提出以下查询:
select id, name, parent_id from fields
union
select a.id, a.name, b.name
from fields a, fields b
where b.parent_id = a.id;
并做了一些测试,但我发现它存在一些更优雅的方式
Thx.此查询最好通过使用
左连接来实现。这样,您仍然可以返回没有父id的字段,即NULL
。您还需要使用别名选择parent\u name
(parent\u name
)。这将允许您以编程方式通过其名称而不是数字列索引引用结果($row->parent\u name
vs$row[2]
,如果您选择PHP语言)
请发布您尝试过的代码。然后我可以帮助您更正左连接的+1。OP的原始查询中已经有3个不同的列别名(id
,name
,parent\u id
)。谢谢!正是我需要的。
SELECT A.id AS ID, A.name AS Name, B.name AS Parent
FROM fields A, fields B
WHERE A.parent_id = B.id
SELECT f1.id, f1.name, f2.name parent_name
FROM fields f1
LEFT JOIN fields f2 ON f2.id = f1.parent_id