我試圖找到一個好的,有效的方式來運行這樣的查詢: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