Според Oracle (DocId 2658003.1), това се случва, когато са изпълнени три условия:
- ANSI присъединяване
- СЪЮЗ / СЪЮЗ ВСИЧКИ
- една и съща таблица се появява повече от веднъж в заявката
Очевидно "QCSJ_C" се използва вътрешно, когато Oracle трансформира обединения в стил ANSI.
РЕДАКТИРАНЕ:
Намерих минимален пример:
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
Може да се поправи или чрез използване на не-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
Или, за предпочитане, като използвате имена на колони вместо *
:
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