我想要的是所有的parentid数字,是来自多个其他父母的孩子,也是来自另一个父母的孩子。所有行都在同一个表中。
到目前为止,我所做的是这样的(并且它是有效的):
SELECT *
FROM location
WHERE parentid IN (
SELECT id
FROM location
WHERE parentid IN (
SELECT id
FROM location
WHERE parentid = 0
)
)我唯一想知道的是,有没有更好/更快的方法来实现完全相同的事情?该表由大约200.000行组成。
发布于 2014-06-22 02:04:32
如果我没记错的话你想要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;https://stackoverflow.com/questions/24343843
复制相似问题