任何人都可以告诉我两列中SQL的NOT IN条件的确切语法.
这是我用VBA编写的查询.
strNewSql = "SELECT distinct(tblRevRelLog_Detail.PartNumber),tblRevRelLog_Detail.ChangeLevel,tblRevRelLog_Detail.ID FROM tblRevRelLog_Detail LEFT JOIN tblEventLog ON tblRevRelLog_Detail.PartNumber = tblEventLog.PartNumber" strNewSql = strNewSql & " WHERE (tblEventLog.PartNumber) Not In(SELECT tblEventLog.PartNumber FROM tblEventLog WHERE tblEventLog.EventTypeSelected = 'pn REMOVED From Wrapper') AND tblEventLog.TrackingNumber = """ & tempTrackingNumber & """ AND tblEventLog.TrackingNumber = tblRevRelLog_Detail.RevRelTrackingNumber;"
我想改变这个子查询,它应该适用于两列的组合,如下所示:
strNewSql = "SELECT tblRevRelLog_Detail.PartNumber,tblRevRelLog_Detail.ID FROM tblRevRelLog_Detail LEFT JOIN tblEventLog ON tblRevRelLog_Detail.PartNumber = tblEventLog.PartNumber" strNewSql = strNewSql & " WHERE (((tblEventLog.PartNumber,tblEventLog.PartNumberChgLvl) Not In(SELECT tblEventLog.PartNumber,tblEventLog.PartNumberChgLvl FROM tblEventLog WHERE tblEventLog.EventTypeSelected = 'pn REMOVED From Wrapper') AND tblEventLog.TrackingNumber = """ & tempTrackingNumber & """ AND tblEventLog.TrackingNumber = tblRevRelLog_Detail.RevRelTrackingNumber);"
但这不起作用…..
解决方法
您不能将IN用于多个列,但通常可以使用EXISTS实现相同的效果:
SELECT * FROM tbl1 WHERE NOT EXISTS ( SELECT * FROM tbl2 WHERE tbl2.col1 = tbl1.col1 AND tbl2.col2 = tbl1.col2 )