ccystewart
CCCCCCCYYY_
采纳率83.3%
2019-12-26 12:09

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

20

比如说一张表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 dcopyboy 2年前

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

    点赞 评论 复制链接分享
  • qq_39019765 打杂的程序员 2年前
    SELECT a.name,b.name as superior FROM ORGAN a
    INNER JOIN ORGAN b
    ON a.PARENT_ID=b.ID
    
    点赞 1 评论 复制链接分享
  • weixin_44700117 「已注销」 2年前

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

    点赞 评论 复制链接分享
  • wojiushiwo945you 毕小宝 2年前

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

    点赞 评论 复制链接分享

相关推荐