sql >> Database teknologi >  >> RDS >> Oracle

Undgå, at Oracle minus-sætning fjerner dubletter

En anden mulighed:

SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST1
MINUS
SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST2

Dette ville være MINUS med hver duplikat behandlet som en særskilt post. Bemærk i eksemplet nedenfor, at hvis TEST1 har to 'C'-værdier, og TEST2 kun har én, får du én i outputtet.

dev> select * from test1;

T
-
A
A
B
C
C

dev> select * from test2;

T
-
B
C

dev>     SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST1
  2      MINUS
  3      SELECT TEST, row_number() OVER (PARTITION BY TEST ORDER BY TEST) FROM TEST2
  4  /

T ROW_NUMBER()OVER(PARTITIONBYTESTORDERBYTEST)
- --------------------------------------------
A                                            1
A                                            2
C                                            2


  1. Tilføjelse af en unik id-kolonne og tilføjelse af standarden for at generere ny guide

  2. Kør Python Script fra MSSQL

  3. PostgreSQL:venstre ydre joinsyntaks

  4. Hvordan trækker man lager og salg fra ved hjælp af mysql underforespørgsel?