Il y a une table d'employé comme ci-dessous
EPM_ID ------ 1001 1002 1004
3 Réponses :
Cela le fera:
select EPM_IDs from ( select 1000 as EPM_IDs union select 1001 union select 1002 union select 1003 union select 1004 union select 1005 )a where not exists(select 1 from EMPLOYEE e where a.EPM_IDs = e.EPM_IDs)
Mais j'ai une énorme liste d'environ 50 000 éléments de la liste. Cette énorme requête va-t-elle courir?
Je vois que cette liste d'éléments est-elle dans une chaîne ou une table? Dans quelle forme l'avez-vous?
Vous pouvez utiliser la clause Connecter par code> pour convertir votre liste en lignes, puis effectuez moins code> comme suit: SQL> -- GENERATING SAME DATA AS YOUR TABLE
SQL> WITH YOUR_DATAA (EMPLOYEE_ID) AS
2 (SELECT '1001' FROM DUAL UNION ALL
3 SELECT '1002' FROM DUAL UNION ALL
4 SELECT '1004' FROM DUAL),
5 -- YOUR QUERY STARTS FROM HERE -- WITH
6 YOUR_LIST (LST) AS
7 (SELECT '1000, 1001, 1002, 1003, 1004, 1005' FROM DUAL)
8 --
9 SELECT TRIM(REGEXP_SUBSTR(LST, '[^,]+', 1, LEVEL)) AS EMPLOYEE_IDS
10 FROM YOUR_LIST
11 CONNECT BY LEVEL <= REGEXP_COUNT(LST, ',') + 1
12 MINUS
13 SELECT EMPLOYEE_ID
14 FROM YOUR_DATAA;
EMPLOYEE_IDS
--------------------------------------------------------------------------------
1000
1003
1005
SQL>
Pouvez-vous nous faire savoir la version de base de données Oracle que vous utilisez et la sortie de la commande Desc de la table des employés? p>
Aussi, s'il vous plaît laissez-nous savoir le nombre de lignes de votre table (c.-à-d. Nombre de lignes existant dans la table) et la longueur / la taille de la liste des identifiants d'employés que vous essayez de trouver / ne pas trouver à partir de ta table? p>
En outre, cette liste des identifiants d'employés que vous avez: sont-ils stockés dans un fichier, une autre table ou dans une page Web, etc.? Veuillez aviser. p>
Cela aidera à répondre à votre question plus loin. p>
Cordialement! P>
suddhasatwa p>