2016-11-18 23 views
0

我完全失去了對如何解決數據檢索挑戰的思考。從具有相同結構的兩個表中獲取重疊的數據,給予其他優先權:Oracle

enter image description here

我有這兩個表:MY_DATAMY_DATA_CHANGE在我的Oracle數據庫。 我想選擇數據的一些事情是這樣的:

SELECT ALL COLUMNS 
FROM MY_DATA 
WHERE ID IN (1,2,4,5) FROM MY_DATA 
    BUT IF ANY ID IS PRESENT IN (1,2,4,5) IN MY_DATA_CHANGE 
    THEN USE ROW FROM MY_DATA_CHANGE 

所以我總的結果一定是這樣的:

enter image description here

我只能用SQL沒有存儲過程,由於這個查詢是要成爲另一個非常大的查詢的一部分(遺留代碼寫得很長)(將用於Crystal報表工具來創建報表)。

所以,請大家幫忙。我的列數據包含CLOB,通常的UNION邏輯對它們不起作用。

我該怎麼做?

回答

1
SELECT 
    m.Id 
    ,COALESCE(c.CLOB1,m.CLOB1) as CLOB1 
    ,COALESCE(c.CLOB2,m.CLOB2) as CLOB2 
FROM 
    MY_DATA m 
    LEFT JOIN MY_DATA_CHANGE c 
    ON m.Id = c.Id 
WHERE 
    m.ID IN (1,2,4,5) 

我會選擇這樣做的方式是通過兩個表之間LEFT JOIN然後用COALESCE()

+0

Thankx很多好友,你讓我的生活變得簡單。我對這個問題非常緊張。 – user3769778

+0

@ user3769778歡迎你好運 – Matt

相關問題