sql >> Databasteknik >  >> RDS >> Oracle

Välj alla rader som förekommer i listan med 2927 id:n

Här är ett annat sätt att närma sig det genom att omvandla ID:n till en logisk tabell med hjälp av ett Common Table Expression (CTE) och sedan gå med som vanligt. Det kan vara lättare att få huvudet runt det när du tänker på det så här:

-- 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. Modellering av produktvarianter

  2. Fixa "ERROR 1054 (42S22):Okänd kolumn "..." i "on-sats" i MariaDB

  3. Får fel:Det går inte att ansluta till någon av de angivna MySQL-värdarna. I en applikation som inte använder MySQL

  4. Postgres fulltextsökning med synonymer