Oracle資料庫查詢兩個表中差異值?

在資料日常管理和維護過程中,常會需要去查詢一些在表A中存在的值而在表B中又不存在的部分。在剛遇見問題的時候,我也頭痛苦惱的好些時間,因為這樣的問題對一個新手來說確實比較棘手,下面,小編將舉例為你分享一種快速處理的辦法。

工具/原料

電腦 資料庫工具

方法/步驟

首先我們確認在B表中是存在(T00008)這樣一個數據記錄的。

SELECT * FROM G_SN_STATUS B WHERE SERIAL_NUMBER='T0008'

Oracle資料庫查詢兩個表中差異值

再次我們查詢A表中,發現不存在(T00008T)這個值得記錄。

SELECT * FROM G_SN_KEYPARTS A WHERE ITEM_PART_SN='T0008'

Oracle資料庫查詢兩個表中差異值

T0008在A表中對應的欄位是:ITEM_PART_SN 在B表中對應的欄位是SERIAL_NUMBER .

Oracle資料庫查詢兩個表中差異值

Oracle資料庫查詢兩個表中差異值

這時我們利用ORACLE 資料庫的 來實現兩個表相同欄位的差異部分----即在表B中存在而不存在於表A。

SELECT B.SERIAL_NUMBER FROM G_SN_STATUS B

MINUS

SELECT A.SERIAL_NUMBER FROM G_SN_KEYPARTS A

Oracle資料庫查詢兩個表中差異值

上例中由於是測試資料庫,資料量比較少,才查出63筆資料,如果是大資料的時候,我們往往需要加上一些條件,這樣會更快速(稍加條件後,資料變少了)。

SELECT B.SERIAL_NUMBER FROM G_SN_STATUS B WHERE IN_PROCESS_TIME>to_date('2016-03-01 00:00:00','yyyy-mm-dd HH24:mi:ss')

MINUS

SELECT A.SERIAL_NUMBER FROM G_SN_KEYPARTS A

Oracle資料庫查詢兩個表中差異值

以上只是示範 MINUS的用法,若資料量大,請自行加上篩選條件,避免查詢資料量過大,造成不必要的損失。

Oracle資料庫查詢兩個表中差異值

注意事項

大資料查詢時注意加上合適的條件。

問題, 資料庫, 差異, 表中,
相關問題答案