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

Dlaczego Oracle SQL w tajemniczy sposób rozwiązuje niejednoznaczność w jednym sprzężeniu, a nie w innych?

W przypadku trzeciego zapytania Oracle 10g zwraca field3 z drugiej tabeli TestTable1 (alias TestTable1_2). Wygląda na to, że jest to błąd, który został naprawiony w 11g.

Przypadek testowy:

INSERT INTO TestTable1 VALUES (1,2,3,NULL);
INSERT INTO TestTable1 VALUES (2,5,6,1);
INSERT INTO TestTable2 VALUES (5,6,7);
INSERT INTO TestTable2 VALUES (2,20,30);

SELECT field3
FROM TestTable1
join TestTable2 ON TestTable1.field1 = TestTable2.field1
left join TestTable1 TestTable1_2 ON TestTable1.self_ref = TestTable1_2.id;

FIELD3
======
3
(null)

SELECT TestTable1.field3, TestTable2.field3, TestTable1_2.field3
FROM TestTable1
join TestTable2 ON TestTable1.field1 = TestTable2.field1
left join TestTable1 TestTable1_2 ON TestTable1.self_ref = TestTable1_2.id;

FIELD3 FIELD3_1 FIELD3_2
====== ======== ========
6      7        3
3      30       (null)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać inne kolumny, których nie ma w klauzuli GROUP BY w wyroczni select sql?

  2. Oracle Dostęp do zaktualizowanych rekordów podczas tej samej transakcji

  3. Okno dialogowe nie otwiera się z GET_FILE_NAME Oracle Forms

  4. Dynamiczna partycja tabeli Oracle

  5. Wykonaj funkcję Oracle, która zwraca kursor referencyjny w C#