0
我不明白我在做什麼錯。我試圖讓每一個滿足標準的或標準B.select count(ID)where ID IN a or b
select CREATE_WEEK, count (A.PK)
from TABLE1 A
where (A.PK not in (select distinct (B.FK)
from TABLE2 B
where B.CREATE_TIMESTAMP > '01-Jan-2013')
or A.PK in (select A.PK
from (select A.PK, A.CREATE_TIMESTAMP as A_CRT, min (B.CREATE_TIMESTAMP) as FIRST_B
from TABLE1 A, TABLE2 B
where A.PK = B.FK
and A.CREATE_TIMESTAMP > '01-Jan-2013'
and B.CREATE_TIMESTAMP > '01-Jan-2013'
group by A.PK, A.CREATE_TIMESTAMP)
where A_CRT < FIRST_B))
and A.CREATE_TIMESTAMP > '01-Jan-2013'
and CREATE_WEEK >= 2
and THIS_WEEK - CREATE_WEEK >= 1
group by CREATE_WEEK
order by CREATE_WEEK asc
**注ID的每週COUNT:PK在表1 = FK表2中,所以在第一個子查詢,我檢查是否表1中的PK在表2中以FK存在。一週來自TO_CHAR(TO_DATE(TRUNC(A.CREATE_TIMESTAMP,'IW')),'IW')
當我取出OR並在子查詢上運行查詢時,結果在1-2秒內返回。但是,當我嘗試運行組合查詢時,結果不會在20分鐘後返回。
我知道我可以單獨運行它們,然後將它們彙總在電子表格中,但我寧願只獲取一個數字。
什麼關於工會嗎? –
哪個數據庫和版本的數據庫? –
「我知道我可以單獨運行它們,然後將它們彙總到電子表格中」:如果任何ID在子查詢A中不存在,但在子查詢B中,則它們將被計數兩次,如果這樣做的話。只是因爲*你*知道情況並非如此,並不意味着數據庫知道。數據庫必須檢查,以便給你正確的結果,不幸的是,它似乎並沒有以最有效的方式這樣做。 – hvd