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

Ngăn câu lệnh trừ Oracle xóa các bản sao

Một tùy chọn khác:

SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST1
MINUS
SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST2

Điều này sẽ là MINUS với mỗi bản sao được coi là một mục nhập riêng biệt. Lưu ý trong ví dụ bên dưới, nếu TEST1 có hai giá trị 'C' và TEST2 chỉ có một, bạn sẽ nhận được một giá trị ở đầu ra.

dev> select * from test1;

T
-
A
A
B
C
C

dev> select * from test2;

T
-
B
C

dev>     SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST1
  2      MINUS
  3      SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST2
  4  /

T ROW_NUMBER()OVER(PARTITIONBYTESTORDERBYTEST)
- --------------------------------------------
A                                            1
A                                            2
C                                            2


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Muốn truy vấn đơn giản này lặp lại

  2. Các lựa chọn thay thế cho Toad

  3. Sử dụng Dapper với Oracle

  4. Hạn chế truy vấn bên trong với thuộc tính truy vấn bên ngoài

  5. oracle - cùng một truy vấn nhưng kế hoạch khác nhau ở 11g và 12g