SQL如何取同表内的关联数据?

SQL如何取同表内的关联数据?

问题描述:

比如说一张表organ内有这样几个字段:

ID |  parent_ID  |  NAME 

现在取了上面三个字段后,想通过这条数据的parent_ID取到他的parent_ID的NAME值

我写的是

SELECT a.name,b.name as superior FROM ORGAN a
LEFT JOIN ORGAN b
ON a.PARENT_ID=b.ID

不知道还没有更简洁更快的方法呢?这样等于多并了一张表,查询效率不高

可以采用子查询:
SELECT a.name,(select name from ORGAN b where a.PARENT_ID=b.ID) as superior FROM ORGAN a

因为涉及到同一个表,所以自关联查询是比较好的方法。
可以直接用内关联而不用左关联。

查询速度慢可以考虑是数据量大等原因,可以采取加为表索引等方式。具体情况需要具体分析,你这条sql查询需要多长时间?你可以explain你的sql一下,不管怎么改,查询走方式的都是大致相同的。

SELECT a.name,b.name as superior FROM ORGAN a
INNER JOIN ORGAN b
ON a.PARENT_ID=b.ID