Oracle
 sql >> база данни >  >> RDS >> Oracle

Изберете всички редове, които се срещат в списъка с 2927 идентификатора

Ето още един начин да подходите, като превърнете идентификаторите в логическа таблица с помощта на израз на обща таблица (CTE), след което се присъедините както обикновено. Може да е по-лесно да си мислите за това по следния начин:

-- Build the list of IDs.
with data(str) as (
    select '67,122,173,256,284,285,288,289,291,294,296,298,301,320,346,359
     ,366,425,428,454,528,573,576,584,593,654,654,694,722,838,1833,1976,1979,1979,2002
     ,2004,2005,2045,2083,2109,2114,2126,2126,2157,2204,2204,2211,2212,2332,2576' 
    from dual
),
-- Turn the list into a table using the comma as the delimiter. Think of it
-- like a temp table in memory.
id_list(id) as (
  select regexp_substr(str, '(.*?)(,|$)', 1, level, NULL, 1)
  from data
  connect by level <= regexp_count(str, ',') + 1
)
-- Select data from the main table, joining to the id_list "temp" table where
-- the ID matches.
select tablename.*
from tablename, id_list
where tablename.id = id_list.id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво не е наред с този PL/SQL? Променливата за свързване * НЕ СЕ ДЕКЛАРИРА

  2. Казус с различен тип данни

  3. Ред на изпълнение на условията в SQL клауза „къде“.

  4. Как да увеличим буфера dbms_output?

  5. Крайната точка на Spring Boot Actuator /health не показва база данни или информация за файловата система