sql >> Databasteknik >  >> RDS >> Oracle

Hur man inkluderar mer än en partition i en enda select-sats i Oracle

Det finns minst tre sätt att välja data från specifika partitioner. Se handboken för en grundlig beskrivning av syntaxen.

create table agg_summary (period date, lvl_id number)
partition by list (lvl_id)
(
    partition p1 values (1),
    partition p2 values (2),
    partition p3 values (3)
);

--#1: Normal predicate:
select * from agg_summary where lvl_id in (1,2);

--#2: Partition_extended_name:
select * from agg_summary partition (p1)
union all
select * from agg_summary partition (p2);

--#3: Partition_excension_clause:
select * from agg_summary partition for (1)
union all
select * from agg_summary partition for (2);

99,9 % av tiden bör alternativ #1 vara tillräckligt. Oracle kommer automatiskt att avgöra vilka partitioner som används och kommer att beskära korrekt. I fall där beskärning inte fungerar korrekt, eller det är mer logiskt att välja baserat på partitionsnamnet eller nyckeln, bör alternativ #2 eller #3 fungera.




  1. Referensalias (beräknat i SELECT) i WHERE-satsen

  2. Ta bort HTML-taggar i PostgreSQL

  3. MySQL ALTER TABLE hänger sig

  4. Infoga flera rader med PDO