MINUS Operator in oracle

前端 未结 2 544
余生分开走
余生分开走 2021-01-11 16:45

MINUS Operator

I have 2 tables A and B.

SELECT COUNT(*) FROM (SELECT * FROM tableA)

returns 389

SELECT COUNT(*)          


        
相关标签:
2条回答
  • 2021-01-11 17:25

    Suppose if you have set A and B, A = {1,2,3,4} and count(A) = 4, B = {5,6,6,7,7} and count(B) = 5

    A-B = {1,2,3,4} thus count(A-B) = count(A) = 4

    But B-A = {5,6,7} and count(B) = 3

    Thus what we understand here is that minus eliminates the duplicate terms(or rows). That's the reason why the row count reduced from 217 to 89.

    Hope this helps.

    0 讨论(0)
  • 2021-01-11 17:47

    MINUS takes the first result set, and removes any that exist in the second result set; it also removes any duplicates.

    In your example, tableA has 389 rows, and tableB has 217 rows; your INTERSECT shows there are no rows in common, which means tableA MINUS tableB is 389 rows (i.e. all of them).

    tableB MINUS tableA returns the distinct set of rows in tableB, therefore there are 89 distinct values in tableB.

    0 讨论(0)
提交回复
热议问题