Oracle
 sql >> Baza danych >  >> RDS >> Oracle

jak wybrać listę 10 000 unikalnych identyfikatorów z dual w Oracle SQL

Użyj kolekcji (nie są one ograniczone do 1000 elementów, takich jak IN klauzula to):

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

SYS.ODCIVARCHAR2LIST i SYS.ODCINUMBERLIST są typami kolekcji, które są dostarczane w SYS schemat.

Możesz dołączyć to bezpośrednio do dowolnej tabeli SELECT bez konieczności używania DUAL tabela:

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

Jeśli możesz utworzyć typ kolekcji, nie potrzebujesz nawet TABLE wyrażenie i może używać go bezpośrednio w WHERE klauzula przy użyciu MEMBER OF operator:

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

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

Możesz nawet przekazać wartości jako parametr wiązania - zobacz moją odpowiedź tutaj



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Urządzenie do odzyskiwania danych bez utraty danych

  2. Jak wyeksportować tabelę do pliku CSV za pomocą Oracle SQL Developer?

  3. Pytania do rozmowy kwalifikacyjnej Oracle

  4. Cloud Native i DevSecOps na dużą skalę dzięki Capgemini Agile Innovation Platform i Oracle Cloud

  5. Oracle:Co robi `(+)` w klauzuli WHERE?