Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

cách chọn danh sách 10.000 id duy nhất từ ​​kép trong SQL oracle

Sử dụng bộ sưu tập (chúng không giới hạn ở 1000 mục như IN mệnh đề là):

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

SYS.ODCIVARCHAR2LISTSYS.ODCINUMBERLIST là các loại tập hợp được cung cấp trong SYS lược đồ.

Bạn có thể tham gia trực tiếp vào bảng nào bạn đang SELECT nhập từ mà không cần sử dụng DUAL bảng:

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

Nếu bạn có thể tạo một loại bộ sưu tập thì bạn thậm chí không cần TABLE và có thể sử dụng nó trực tiếp trong WHERE mệnh đề sử dụng MEMBER OF nhà điều hành:

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

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

Bạn thậm chí có thể chuyển các giá trị dưới dạng tham số ràng buộc - xem câu trả lời của tôi tại đây



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham gia bên trong có giống với tham gia trang bị không?

  2. Sự khác biệt trừ so với ngoại trừ trong ORACLE / SQL Server

  3. Cập nhật các cột có giá trị Null

  4. cung cấp tên người dùng và mật khẩu chính xác, nhận được ORA-01017:tên người dùng / mật khẩu không hợp lệ; Đăng nhập đã bị từ chối

  5. Cách lặp qua danh sách được phân tách trong Oracle PLSQL