CCCCCCCYYY_
2019-12-26 12:09
采纳率: 100%
浏览 840
已采纳

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

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • dcopyboy 2019-12-26 14:45
    已采纳

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

    打赏 评论
  • 毕小宝 2019-12-26 13:24

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

    打赏 评论
  • 「已注销」 2019-12-26 14:53

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

    打赏 评论
  • 打杂的程序员 2019-12-26 15:28
    SELECT a.name,b.name as superior FROM ORGAN a
    INNER JOIN ORGAN b
    ON a.PARENT_ID=b.ID
    
    打赏 评论

相关推荐 更多相似问题