Du kan använda detta (mer kompakt syntax):
SELECT *
FROM CompletedTasks
WHERE (userID, taskID) NOT IN
( SELECT userID, taskID
FROM PlannedTasks
) ;
eller NOT EXISTS
version (som även om den är mer komplex, men borde vara mer effektiv med korrekta index):
SELECT c.*
FROM CompletedTasks AS c
WHERE NOT EXISTS
( SELECT 1
FROM PlannedTasks AS p
WHERE p.userID = c.userID
AND p.taskID = c.taskID
) ;
och naturligtvis LEFT JOIN / IS NULL
version som @jmacinnes har i sitt svar.