我的问题有点虚伪,但SQL从未成为我的一杯茶。
我有一个包含3列的简单表:id, name, parent_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。
答案 0 :(得分:2)
使用LEFT JOIN
可以最好地实现此查询。这样,您仍然可以返回没有parent_id
的字段,即NULL
。您还需要使用别名(示例中的parent_name
)选择parent_name
。如果PHP是您选择的语言,这将允许您以编程方式通过名称而不是数字列索引($row->parent_name
vs $row[2]
来引用结果)。
SELECT f1.id, f1.name, f2.name parent_name
FROM fields f1
LEFT JOIN fields f2 ON f2.id = f1.parent_id
答案 1 :(得分:0)
SELECT A.id AS ID, A.name AS Name, B.name AS Parent
FROM fields A, fields B
WHERE A.parent_id = B.id