2016-06-15 26 views
0

不知道如何重寫下面的查詢。我試圖將table_a加入到最近的table_b記錄中。目前只測試一個ID,但是可以添加table_a上的不同標準:ORA-01799 - 需要更正查詢

Select t.* 
from table_a t 
left join table_b d on d.id = T.id and d.MOD_DATE IN (SELECT MAX(mod_date) FROM table_b d2 WHERE d2.id = t.id) 
where T.id = 123456 

有什麼建議嗎?

+0

第1步 - 確定您所要完成的任務。 –

+0

@DanBracuk看到我的編輯。 – user3224907

回答

1

我認爲你正在尋找的東西,如:

SELECT  t.* 
FROM  table_a t 
LEFT JOIN (
       SELECT  d.* 
       FROM  table_b d 
       INNER JOIN (
           SELECT id 
           ,  MAX(mod_date) mod_date_max 
           FROM table_b d2 
           GROUP BY id 
          ) db 
         ON db.id = d.id 
         AND db.mod_date_max = d.mod_date 
      ) d 
     ON d.id = T.id 
WHERE  T.id = 123456 

請注意,您where子句將在left joininner join

此外,如果您遇到錯誤,請發佈錯誤消息,而不僅僅是它的編號。

0

我也發現了同樣可以用下面的查詢來實現:

SELECT * FROM table_a t 
WHERE id IN (
       SELECT id 
        FROM (
          SELECT id,MAX(MOD_DATE) 
          FROM table_b 
          WHERE id = 123456 
         GROUP BY id  
         ) 
      )