sql >> Databáze >  >> RDS >> Oracle

Zabraňte příkazu Oracle mínus v odstraňování duplikátů

Další možnost:

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

To by bylo MINUS, přičemž každý duplikát by se považoval za samostatný záznam. Všimněte si v příkladu níže, pokud má TEST1 dvě hodnoty 'C' a TEST2 pouze jednu, dostanete ve výstupu jednu.

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. 5 způsobů, jak opravit chybu „Divide by zero“ v SQL Server (Msg 8134)

  2. Proč parametr vazby v klauzuli ORDER BY neseřadí výsledky?

  3. Rozdíl data/času v PHP/MySQL

  4. Jak používat více databází pro jednu aplikaci rails 3.1 v Heroku?