Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL:selecione chaves que não existem em uma tabela


Podemos usar o MYSQL não na opção.
SELECT id
FROM table_one
WHERE id NOT IN ( SELECT id FROM table_two )

Editado

Se você estiver obtendo a fonte de um arquivo csv então você pode simplesmente colocar esses valores diretamente como:

Estou assumindo que o CSV é como 1,2,3,...,n
SELECT id
FROM table_one
WHERE id NOT IN ( 1,2,3,...,n );

EDITAR 2

Ou se você quiser selecionar o contrário, então você pode usar mysqlimport para importar dados em tabela temporária no banco de dados MySQL e recuperar o resultado e excluir a tabela.

Como:

Criar tabela
CREATE TABLE my_temp_table(
   ids INT,
);

carregar arquivo .csv
LOAD DATA LOCAL INFILE 'yourIDs.csv' INTO TABLE my_temp_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(ids);

Selecionando registros
SELECT ids FROM my_temp_table
WHERE ids NOT IN ( SELECT id FROM table_one )

mesa solta
DROP TABLE IF EXISTS my_temp_table