gpt4 book ai didi

MySQL 选择里面的选择里面的选择

转载 作者:行者123 更新时间:2023-11-29 00:12:38 25 4
gpt4 key购买 nike

我想要的是所有 parentid 号码,这些号码是来自多个其他 parent 的 child ,这些 parent 也是来自另一个 parent 的 child 。所有行都在同一个表中。

现在我所拥有的是这个(并且有效):

SELECT * 
FROM location
WHERE parentid IN (
SELECT id
FROM location
WHERE parentid IN (
SELECT id
FROM location
WHERE parentid = 0
)
)

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

最佳答案

如果我没理解错的话,你想要 parentid = 0 的孙子。个人认为明确连接更容易遵循并且可能产生更好的执行计划:

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。在这种情况下,您实际上可以将查询简化为:

select l2.*
from location l1
location l2
on l2.parentid = l1.id
where l1.parentid = 0;

关于MySQL 选择里面的选择里面的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24343843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com