• It sounds as though you want the "DELETE FROM x JOIN y" type of query shown in the example D of the DELETE syntax - https://docs.microsoft.com/en-us/sql/t-sql/statements/delete-transact-sql#d-using-joins-and-subqueries-to-data-in-one-table-to-delete-rows-in-another-table

    For example:

    --table variables because lazy
    DECLARE @MasterCities TABLE (Country varchar(20), city varchar(20))
    DECLARE @VisitedCities table (Country varchar(20), city varchar(20))

    --dummy data
    INSERT INTO @MasterCities values('UK', 'London'), ('UK', 'Birmingham'), ('UK','Edinburgh'), ('UK','Belfast'), ('Canada', 'London')
    INSERT INTO @VisitedCities VALUES ('UK', 'London'), ('UK', 'Edinburgh')

    --see what we've got so far
    SELECT * FROM @MasterCities
    SELECT * FROM @VisitedCities

    --delete matching records from Master table
    DELETE   m
    FROM
         @MasterCities AS m
      INNER JOIN @VisitedCities AS v ON v.Country = m.Country
                AND v.city = m.city;

    --check the results
    SELECT * FROM @MasterCities
    SELECT * FROM @VisitedCities

    Thomas Rushton
    blog: https://thelonedba.wordpress.com