sql >> Databáze >  >> RDS >> Mysql

mysql Kde není v použití dvou sloupců

Můžete použít toto (kompaktnější syntaxe):

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

nebo NOT EXISTS verze (která je sice složitější, ale měla by být efektivnější se správnými indexy):

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

a samozřejmě LEFT JOIN / IS NULL verzi, kterou má @jmacinnes ve své odpovědi.



  1. index na adrese URL nebo hash s ohledem na RAM

  2. Přidání sekund k datetime v MySQL

  3. mysqldump celou strukturu, ale pouze data z vybraných tabulek v jediném příkazu

  4. Více volání array_agg() v jednom dotazu