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

Hợp nhất truy vấn trả về ORA-30926:không thể có được một tập hợp các hàng ổn định trong các bảng nguồn

Bạn có thể có các bản sao trong dữ liệu. DISTINCT không đảm bảo bạn có IdToUpdate duy nhất khi bạn sử dụng nó với các cột khác. Xem:

  TẠO BẢNG #MyTable (IdToUpdate INT, LogSetIdToUpdateTo INT); CHÈN VÀO CÁC GIÁ TRỊ #MyTable (1,1), (1,2), (2,1), (3,1); CHỌN DISTINCT IdToUpdate , LogSetIdToUpdateToFROM #MyTable;  

LiveDemo

Bạn sẽ nhận được IdToUpdate hai lần. Kiểm tra dữ liệu của bạn:

 =0 và nullLogSetId.LogSetId =-1) CHỌN IdToUpdate, COUNT (*) AS cFROM cteGROUP BY IdToUpdateHAVING COUNT (*)> 1;  

Một cách để thực hiện là sử dụng hàm tổng hợp (MAX / MIN) thay vì DISTINCT :

 =0 và nullLogSetId.LogSetId =-1 GROUP BY nullLogSetId.Id) trên (Id =IdToUpdate) khi khớp sau đó cập nhật tập LogSetId =LogSetIdToUpdateTo  



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm ASIN () trong Oracle

  2. <SQL> Cách thay đổi kích thước VARCHAR2 của bảng

  3. Tham gia các bảng trong Oracle SQL Developer

  4. Pivot trong Oracle 11g

  5. Không còn SPU