sql >> Database teknologi >  >> RDS >> Oracle

Vælg alle rækker, der forekommer på listen over 2927 id'er

Her er en anden måde at gribe det an på ved at omdanne ID'erne til en logisk tabel ved hjælp af et Common Table Expression (CTE) og derefter tilslutte sig som normalt. Måske er det nemmere at få hovedet omkring det ved at tænke på det på denne måde:

-- 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. Introduktion til FORALL-erklæring i Oracle-databasen

  2. Er det muligt at få listen over rækker grupperet sammen efter et kolonnenavn i Mysql?

  3. Indlæser zippet CSV(filnavn.csv.gz)-fil i PostgreSQL-tabellen

  4. Er der nogen måde at gøre et UNIKT indeks ufølsomt for store og små bogstaver i Mysql 5.1.x?