NOT IN condition in SQL

calendar_today Asked Nov 16, 2010
thumb_up 13 upvotes
history Updated April 16, 2026

Question posted 2010 · +6 upvotes

Can anyone tell me the exact syntax for NOT IN condition in SQL on two columns.

This is my query written 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;"

I want to change this sub query like, it should apply on the combination of two columns as follows:

strNewSql = "SELECT 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, 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);"

But this is not working…..

Accepted answer +13 upvotes

You can’t use IN with more than one column but you can usually achieve the same effect using EXISTS:

SELECT *
FROM tbl1
WHERE NOT EXISTS
(
    SELECT *
    FROM tbl2
    WHERE tbl2.col1 = tbl1.col1
        AND tbl2.col2 = tbl1.col2
)

Top ms-access Q&A (6)

+13 upvotes ranks this answer #13 out of 55 ms-access solutions on this site — top 24%.