Oracle
 sql >> база данни >  >> RDS >> Oracle

ORACLE 12.2.01 избор на колони от различни таблици с подобни имена --> използван вътрешен идентификатор на колона

Според Oracle (DocId 2658003.1), това се случва, когато са изпълнени три условия:

  1. ANSI присъединяване
  2. СЪЮЗ / СЪЮЗ ВСИЧКИ
  3. една и съща таблица се появява повече от веднъж в заявката

Очевидно "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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инструменти за разработчици на Oracle за грешки на Visual Studio .net

  2. В база данни на Oracle каква е разликата между ROWNUM и ROW_NUMBER?

  3. Събиране на статистика за индекс или създаване на пускане?

  4. Извличане на записи от конкретна колона в Oracle

  5. Защо получавам ORA-01722 (невалиден номер)?