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

hvordan man vælger en liste med 10.000 unikke id'er fra dual i oracle SQL

Brug en samling (de er ikke begrænset til 1000 genstande som en IN). klausulen er):

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

SYS.ODCIVARCHAR2LIST og SYS.ODCINUMBERLIST er samlingstyper, der er leveret i SYS skema.

Du kan tilslutte dette direkte til hvilken tabel du er SELECT ing fra uden at skulle bruge DUAL tabel:

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

Hvis du kan få oprettet en samlingstype, behøver du ikke engang TABLE udtryk og kan bruge det direkte i WHERE klausul ved hjælp af MEMBER OF operatør:

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

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

Du kan endda sende værdierne som en bind-parameter - se mit svar her



  1. SQL Server Index Baglæns Scan:Forståelse, Tuning

  2. Returner en liste over databaser i SQLite

  3. Returner antallet af rækker, der er påvirket af UPDATE-sætninger

  4. PostgreSQL-forespørgsel meget langsom med grænse 1