Mysql
 sql >> Database >  >> RDS >> Mysql

ottenere valori che non esistono nella tabella MySQL

Crea una tabella temporanea con le tue chiavi:

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

Quindi usa NOT IN:

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

Infine, elimina la tabella TEMP se devi:

DROP TABLE mykeys

MODIFICA :Aggiunto SQLFiddle .

Se stai usando PostgreSQL che supporta EXCEPT operatore e anche VALUES può essere utilizzata per creare un set di righe da un elenco di valori, esiste un altro modo più semplice per farlo senza tabelle temporanee (SQLFiddle ):

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