Według Oracle (DocId 2658003.1) dzieje się tak, gdy spełnione są trzy warunki:
- Dołącz do ANSI
- ZWIĄZEK / ZWIĄZEK WSZYSTKICH
- ta sama tabela pojawia się w zapytaniu więcej niż raz
Najwyraźniej "QCSJ_C" jest używany wewnętrznie, gdy Oracle przekształca złączenia w stylu ANSI.
EDYCJA:
Znalazłem minimalny przykład:
SELECT * FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy
UNION
SELECT * FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy;
QCSJ_C000000000300000 QCSJ_C000000000300001
X X
Można to naprawić za pomocą składni łączenia innych niż ANSI:
SELECT * FROM dual d1, dual d2 WHERE d1.dummy=d2.dummy
UNION
SELECT * FROM dual d1, dual d2 WHERE d1.dummy=d2.dummy;
DUMMY DUMMY_1
X X
Lub najlepiej używając nazw kolumn zamiast *
:
SELECT d1.dummy, d2.dummy FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy
UNION
SELECT d1.dummy, d2.dummy FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy;
DUMMY DUMMY_1
X X