0
votes

Liste de retour des valeurs fournies qui ne sont pas dans le tableau en oracle

Il y a une table d'employé comme ci-dessous

EPM_ID
------
1001
1002
1004


0 commentaires

3 Réponses :


1
votes

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)


2 commentaires

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?



0
votes

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>


0 commentaires

0
votes

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?

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?

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.

Cela aidera à répondre à votre question plus loin.

Cordialement!

suddhasatwa


0 commentaires