sql >> Databasteknik >  >> RDS >> Oracle

Konstruera en temporär tabell i Oracle SQL

WITH klausulen låter som det som ligger närmast det du beskriver. Men det kräver att du genererar data på något sätt. Välj från DUAL är förmodligen det enklaste alternativet

WITH my_temp_table AS (
  SELECT 'One' name, 1 num from dual union all
  SELECT 'Two', 2 from dual union all
  SELECT 'Three', 3 from dual union all
  SELECT 'Four', 4 from dual
)
SELECT *
  FROM my_temp_table 
       JOIN person ON (<<some join condition>>)
 WHERE <<some predicate>>

Eftersom du inte vill sammanföra en massa frågor kan du göra något liknande

WITH my_temp_table AS (
  select level num,
         initcap( to_char( to_date( level, 'J' ),
                           'JSP' )) name
    from dual
 connect by level <= 4
)
...



  1. Oväntad databasutdata när INNER JOIN används

  2. PostgreSQL ILIKE-fråga med SQLAlchemy

  3. Optimera sökfrågan med OFFSET på stort bord

  4. Att punga eller inte att punga?