我的问题有点愚蠢,但 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;
并做了一些测试,但我可以发现它存在一些更优雅的方式。
谢谢。
最佳答案
此查询最好通过使用LEFT JOIN
来实现。这样您仍然可以返回没有 parent_id
的字段,即 NULL
。您还需要使用别名选择 parent_name
(示例中为 parent_name
)。这将允许您以编程方式通过名称而不是数字列索引来引用结果(如果 PHP 是您的语言,则 $row->parent_name
与 $row[2]
选择)。
SELECT f1.id, f1.name, f2.name parent_name
FROM fields f1
LEFT JOIN fields f2 ON f2.id = f1.parent_id
关于mySQL 优雅的自连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21797491/