我试图找到一个好的,有效的方式来运行这样的查询:SQL多个共享WHERE条件
SELECT *
FROM tableA a
WHERE a.manager IN ( SELECT id
FROM tableB b
CONNECT BY PRIOR b.id = b.manager_id
START WITH b.id = 'managerBob')
OR a.teamLead IN ( SELECT ID
FROM tableB b
CONNECT BY PRIOR b.ID = b.manager_id
START WITH b.ID = 'managerBob')
OR a.creator IN ( SELECT id
FROM tableB b
CONNECT BY PRIOR b.id = b.manager_id
START WITH b.id = 'managerBob')
正如你所看到的,我试图用多个WHERE子句,但每子句在等式的右侧使用相同的数据集。如果我使用多个子句,它似乎运行速度非常缓慢,而且我确信这是因为Oracle正在运行每个子查询。有没有办法做出这样的工作?
SELECT *
FROM tableA a
WHERE a.manager,
a.teamLead,
a.creator in ( SELECT id
FROM tableB b
CONNECT BY PRIOR b.id = b.manager_id
START WITH b.id = 'managerBob')
顺便说一句,我很抱歉,如果这是我可以谷歌搜索,我不知道该怎么称呼这一点。
这个语法让我感到困扰,但它是执行速度最快的。谢谢你告诉我它叫什么,但这是试图找出它的最令人沮丧的部分:) – monitorjbl