sql >> Base de Datos >  >> RDS >> Mysql

mysql Donde no en el uso de dos columnas

Puede usar esto (sintaxis más compacta):

SELECT *
FROM CompletedTasks
WHERE (userID, taskID) NOT IN
      ( SELECT userID, taskID
        FROM PlannedTasks
      ) ;

o el NOT EXISTS versión (que aunque más compleja, debería ser más eficiente con los índices adecuados):

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
      ) ;

y por supuesto el LEFT JOIN / IS NULL versión que tiene @jmacinnes en su respuesta.