sql >> Databasteknik >  >> RDS >> Oracle

ORACLE 12.2.01 välja kolumner från olika tabeller med liknande namn --> intern kolumnidentifierare används

Enligt Oracle (DocId 2658003.1) händer detta när tre villkor är uppfyllda:

  1. ANSI gå med
  2. UNION / UNION ALLA
  3. samma tabell visas mer än en gång i frågan

Tydligen används "QCSJ_C" internt när Oracle transformerar ANSI-style joins.

EDIT:

Hittade ett minimalt exempel:

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

Det kan fixas genom att antingen använda icke-ANSI join-syntax:

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

Eller, helst genom att använda kolumnnamn istället för * :

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. MySQL Gå med i samma bord

  2. Buffring av datainmatning i onlineformulär i händelse av frånkoppling (racket)

  3. Hur man begränsar resultat i MySQL, PostgreSQL och SQLite

  4. Primärnyckel med ASC- eller DESC-beställning?