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

Xóa bằng kết nối trái trong Oracle 10g

Giải pháp của Shannon là cách để đi:sử dụng toán tử KHÔNG CÓ (hoặc KHÔNG TỒN TẠI).

Tuy nhiên, bạn có thể xóa hoặc cập nhật một nối trong Oracle, nhưng cú pháp không giống với MS SQL Server:

SQL> DELETE FROM (SELECT grp.*
  2                  FROM grp
  3                  LEFT JOIN my_data ON grp.id1 = my_data.id1
  4                                   AND grp.id2 = my_data.id2
  5                                   AND grp.id3 = my_data.id3
  6                                   AND grp.id4 = my_data.id4
  7                 WHERE my_data.id1 IS NULL);

2 rows deleted

Ngoài ra, Oracle sẽ chỉ cho phép bạn cập nhật một phép nối nếu không có sự mơ hồ về hàng cơ sở nào sẽ được truy cập bởi câu lệnh. Đặc biệt, Oracle sẽ không mạo hiểm cập nhật hoặc xóa (câu lệnh sẽ không thành công) nếu có khả năng một hàng có thể xuất hiện hai lần trong phép nối. Trong trường hợp này, việc xóa sẽ chỉ hoạt động nếu có ràng buộc DUY NHẤT trên my_data(id1, id2, id3, id4).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không còn dữ liệu để đọc từ lỗi ổ cắm

  2. ORA-08177:không thể tuần tự hóa quyền truy cập cho giao dịch này

  3. Làm thế nào để gửi email bằng Pl / sql

  4. Tại sao các hàm tổng hợp không được phép trong mệnh đề where

  5. cách xuất dữ liệu từ bảng nhật ký sang nội dung email trong oracle