在資料日常管理和維護過程中,常會需要去查詢一些在表A中存在的值而在表B中又不存在的部分。在剛遇見問題的時候,我也頭痛苦惱的好些時間,因為這樣的問題對一個新手來說確實比較棘手,下面,小編將舉例為你分享一種快速處理的辦法。
工具/原料
電腦 資料庫工具
方法/步驟
首先我們確認在B表中是存在(T00008)這樣一個數據記錄的。
SELECT * FROM G_SN_STATUS B WHERE SERIAL_NUMBER='T0008'
再次我們查詢A表中,發現不存在(T00008T)這個值得記錄。
SELECT * FROM G_SN_KEYPARTS A WHERE ITEM_PART_SN='T0008'
T0008在A表中對應的欄位是:ITEM_PART_SN 在B表中對應的欄位是SERIAL_NUMBER .
這時我們利用ORACLE 資料庫的
SELECT B.SERIAL_NUMBER FROM G_SN_STATUS B
MINUS
SELECT A.SERIAL_NUMBER FROM G_SN_KEYPARTS A
上例中由於是測試資料庫,資料量比較少,才查出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
以上只是示範 MINUS的用法,若資料量大,請自行加上篩選條件,避免查詢資料量過大,造成不必要的損失。
注意事項
大資料查詢時注意加上合適的條件。