sql >> Databáze >  >> RDS >> Oracle

jak vybrat seznam 10 000 jedinečných ID z dual v Oracle SQL

Použijte sbírku (nejsou omezeny na 1000 položek jako IN doložka je):

SELECT COLUMN_VALUE AS id
FROM   TABLE(
         SYS.ODCIVARCHAR2LIST(
           'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
         )
       )

SYS.ODCIVARCHAR2LIST a SYS.ODCINUMBERLIST jsou typy kolekcí, které jsou dodávány v SYS schéma.

Můžete se připojit přímo ke kterékoli tabulce SELECT z bez nutnosti použití DUAL tabulka:

SELECT y.*
FROM   your_table y,
       TABLE(
         SYS.ODCIVARCHAR2LIST(
           'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
         )
       ) i
WHERE  y.id = i.COLUMN_VALUE;

Pokud můžete vytvořit typ kolekce, nepotřebujete ani TABLE výraz a lze jej použít přímo v WHERE klauzule pomocí MEMBER OF operátor:

CREATE OR REPLACE TYPE stringlist IS TABLE OF VARCHAR2(200);
/

SELECT *
FROM   yourtable
WHERE  id MEMBER OF stringlist(
                      'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
                    );

Hodnoty můžete dokonce předat jako parametr vazby - viz moje odpověď zde



  1. Postgres INTERVAL pomocí hodnoty z tabulky

  2. Sloučení datových souborů se Statistica, část 1

  3. Použití poradců pro zálohování databáze k automatizaci úloh údržby

  4. Zavedení ovladače Easysoft Oracle® do vašeho prostředí SOA