sql >> Databáze >  >> RDS >> Oracle

Proč Oracle SQL záhadně řeší nejednoznačnost v jednom spojení a ne v jiných

Pro třetí dotaz vrátí Oracle 10g pole3 z druhé TestTable1 (jinak TestTable1_2). Zdá se, že se jedná o chybu, která byla zřejmě opravena v 11g.

Testovací případ:

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. Hašování pomocí kryptování v PHP

  2. Proč to nepřijímá e-mailové adresy s pomlčkou za znakem @?

  3. PostgREST / PostgreSQL Nelze zvětšit zprávu vyrovnávací paměti řetězce

  4. Dotaz, který trvá na sloupcích v klauzuli 'Objednat podle', odpovídá sloupcům v klauzuli 'Seskupit podle'