sql >> Database >  >> RDS >> Oracle

Voorkom dat de Oracle-min-instructie duplicaten verwijdert

Een andere optie:

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

Dit zou MIN zijn, waarbij elk duplicaat als een afzonderlijk item wordt behandeld. Merk op dat in het onderstaande voorbeeld, als TEST1 twee 'C'-waarden heeft en TEST2 er maar één heeft, je er één in de uitvoer krijgt.

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. PHP &MySQL:mysqli_num_rows() verwacht dat parameter 1 mysqli_result is, boolean gegeven

  2. Databaseontwerp met prijsregels voor hotelreserveringssysteem

  3. Waarschuwing:mysql_result() verwacht dat parameter 1 resource is, boolean gegeven

  4. MySQL - Wat is het verschil tussen GROUP BY en DISTINCT?