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