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

získávání hodnot, které neexistují v tabulce mysql

Vytvořte dočasnou tabulku pomocí klíčů:

CREATE TEMPORARY TABLE mykeys (`key` INT);
INSERT INTO mykeys VALUES (1),(2),(3),(4),(5);

Poté použijte NOT IN:

SELECT `key`
FROM mykeys
WHERE `key` NOT IN (SELECT `key` FROM mytable)

Nakonec vypusťte tabulku TEMP, pokud musíte:

DROP TABLE mykeys

UPRAVIT :Přidáno SQLFiddle .

Pokud používáte PostgreSQL, který podporuje EXCEPT operátor a také VALUES příkaz lze použít k vytvoření sady řádků ze seznamu hodnot, existuje další, jednodušší způsob, jak to udělat bez dočasných tabulek (SQLFiddle ):

VALUES (1),(2),(3),(4),(5)
EXCEPT
SELECT key FROM mytable


  1. Zkontrolujte, zda v Postgresu existuje sekvence (plpgsql)

  2. Jak zvýšit výjimku v PL/SQL?

  3. Jak znovu použít dílčí dotaz v SQL?

  4. PHP + MySQL fronta