首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL select inside select inside select

MySQL select inside select inside select
EN

Stack Overflow用户
提问于 2014-06-22 00:58:54
回答 1查看 77关注 0票数 1

我想要的是所有的parentid数字,是来自多个其他父母的孩子,也是来自另一个父母的孩子。所有行都在同一个表中。

到目前为止,我所做的是这样的(并且它是有效的):

代码语言:javascript
复制
SELECT * 
FROM location 
WHERE parentid IN (
    SELECT id 
    FROM location 
    WHERE parentid IN (
        SELECT id 
        FROM location 
        WHERE parentid = 0
    )
)

我唯一想知道的是,有没有更好/更快的方法来实现完全相同的事情?该表由大约200.000行组成。

EN

回答 1

Stack Overflow用户

发布于 2014-06-22 02:04:32

如果我没记错的话你想要parentid = 0的孙子。就我个人而言,我认为显式连接更容易遵循,并可能产生更好的执行计划:

代码语言:javascript
复制
select l2.*
from location l join
     location l1
     on l1.parentid = l.parentid join
     location l2
     on l2.parentid = l1.id
where l.parentid = 0;

唯一需要注意的是:也许where语句应该是where l.id = 0。在这种情况下,您实际上可以将查询简化为:

代码语言:javascript
复制
select l2.*
from location l1
     location l2
     on l2.parentid = l1.id
where l1.parentid = 0;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24343843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档