sql >> Databasteknik >  >> RDS >> Oracle

hur man väljer en lista med 10 000 unika ID från dual i oracle SQL

Använd en samling (de är inte begränsade till 1000 objekt som en IN klausulen är):

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

SYS.ODCIVARCHAR2LIST och SYS.ODCINUMBERLIST är samlingstyper som tillhandahålls i SYS schema.

Du kan ansluta detta direkt till vilken tabell du än är SELECT ing från utan att behöva använda DUAL tabell:

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

Om du kan skapa en samlingstyp behöver du inte ens TABLE uttryck och kan använda det direkt i WHERE sats med 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 till och med skicka värdena som en bindningsparameter - se mitt svar här



  1. Oracle PL/SQL-samlingar - Skapa kapslade tabeller i databasen

  2. Hur Tanh() fungerar i PostgreSQL

  3. Hur man filtrerar poster med Aggregerad funktion COUNT

  4. MySQL Great Circle Distance (Haversine-formel)