如何使用 exists 關鍵字檢查兩個表中是否存在對應的值?
要找出兩個表中是否存在對應的值,可以使用 exists 關鍵字。此關鍵字檢查一個子查詢是否返回任何行,如果返回,則 exists 返回 true;否則,返回 false。
示例查詢:
以下查詢使用 exists 檢查名為 temp1 的表的行是否出現在名為 temp2 的表中:
select * from temp1 where exists ( select * from temp2 where temp1.pn_code = temp2.pn_code and temp1.serialnumber = temp2.serialnumber );
登錄后復制
修改后的查詢:
在你的情況下,你需要檢查主表(temp1)中的行是否出現在子表(temp2)中。修改后的查詢如下:
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 );
登錄后復制