使用 exists 關鍵詞檢查兩個表中是否存在對應的值
在 mysql 查詢中,exists 關鍵詞用于檢查子查詢中是否有結果,如果有則返回 true,沒有則返回 false。這使得它非常適合檢查兩個表中是否存在對應的值。
你的目標是確定子表中的數據是否出現在主表中。為此,你可以使用以下查詢:
select * FROM ( SELECT pn_Code, serialNumber FROM pnassertbasic_ruku pr LEFT JOIN pnassertruku pu ON pr.parent_pnAssertRuku_id = pu.child_pnAssertRukuDetails_id WHERE pn_Code IS NOT NULL AND serialNumber IS NOT NULL AND DATE(pr.create_time) = CURDATE() AND pr.warehouseEntryNumber <> 'WEd3791f0b' ) AS temp1 WHERE EXISTS ( SELECT * FROM ( SELECT pn_Code, serialNumber FROM pnassertbasic_ruku pr LEFT JOIN pnassertruku pu ON pr.parent_pnAssertRuku_id = pu.child_pnAssertRukuDetails_id WHERE pu.child_pnAssertRukuDetails_id IS NULL AND pr.warehouseEntryNumber = 'WEd3791f0b' ) AS temp2 WHERE temp1.pn_Code = temp2.pn_Code AND temp1.serialNumber = temp2.serialNumber )
登錄后復制
此查詢將首先從主表中選擇 pn_code 和 serialnumber,再從子表中選擇相同的字段。然后,它使用 exists 子查詢來檢查主表中的每條記錄在子表中是否存在對應的記錄。如果存在,exists 將返回 true,并顯示主表記錄;否則,exists 將返回 false,主表記錄將被過濾掉。
注意:確保你的查詢語法正確。你將 selet 而不是 select 作為 exists 子查詢的第一個單詞拼寫錯誤。