Oracle Union Usage

Source: Internet
Author: User

  1. [SQL] View plaincopyprint?
    It is well known that several result set collection operations commands, tested today in detail, found some problems and recorded the preparation.

    Suppose we have a table student that includes the following fields and data:

    drop table student;

    CREATE TABLE Student
    (
    ID int PRIMARY KEY,
    Name NVARCHAR2 () NOT NULL,
    Score number NOT NULL
    );

    INSERT into student values (1, ' Aaron ', 78);
    INSERT into student values (2, ' Bill ', 76);
    INSERT into student values (3, ' Cindy ', 89);
    INSERT into student values (4, ' Damon ', 90);
    INSERT into student values (5, ' Ella ', 73);
    INSERT into student values (6, ' Frado ', 61);
    INSERT into student values (7, ' Gill ', 99);
    INSERT into student values (8, ' Hellen ', 56);
    INSERT into student values (9, ' Ivan ', 93);
    INSERT into student values (, ' Jay ', 90);

    Commit

    The difference between Union and union all.
    SELECT *
    From student
    Where ID < 4

    Union

    SELECT *
    From student
    where ID > 2 and ID < 6

    The result will be

    1 Aaron 78
    2 Bill 76
    3 Cindy 89
    4 Damon 90
    5 Ella 73

    If you switch to union ALL to connect two result sets, the result is:

    1 Aaron 78
    2 Bill 76
    3 Cindy 89
    3 Cindy 89
    4 Damon 90
    5 Ella 73

    As you can see, one of the differences between Union and union all is the processing of duplicate results.

    Next we will adjust the order of the two sub-queries, instead

    --union

    SELECT *
    From student
    where ID > 2 and ID < 6

    Union

    SELECT *
    From student
    Where ID < 4

    See if the results are consistent with your expectations?

    --union All

    SELECT *
    From student
    where ID > 2 and ID < 6

    UNION ALL

    SELECT *
    From student
    Where ID < 4

    Well, what about this one?

    Thus we know that the difference between the two is the processing of sorting. UNION ALL organizes the data in the order in which it is associated, and the Union is sorted according to certain rules. So what's the rule? Let's look at it in a different way:

    Select Score,id,name
    From student
    where ID > 2 and ID < 6

    Union

    Select Score,id,name
    From student
    Where ID < 4

    The results are as follows:

    5 Ella
    2 Bill
    1 Aaron
    3 Cindy
    4 Damon

    Consistent with what we expected: the order of the fields will be sorted. Before our query was based on the Id,name,score field order, the result set would be sorted by ID precedence, and now the new field order would have changed the ordering of the query results. And, is a,b,c by the given field ... ORDER BY. The result is Order by a,b,c ..... Of Let's look at the next query:

    Select Score,id,name
    From student
    where ID > 2

    Union

    Select Score,id,name
    From student
    Where ID < 4

    The results are as follows:

    8 Hellen
    6 Frado
    5 Ella
    2 Bill
    1 Aaron
    3 Cindy
    4 Damon
    Ten Jay
    9 Ivan
    7 Gill

    As you can see, for score the same record, it will be sorted by the next field ID. If we want to control the sort by ourselves, is it possible to specify it with order by? The answer is yes, but there are areas to note:

    Select Score,id,name
    From student
    where ID > 2 and ID < 7

    Union

    Select Score,id,name
    From student
    Where ID < 4

    Union

    Select Score,id,name
    From student
    where ID > 8
    ORDER BY id DESC

    The ORDER BY clause must be written in the last result set, and its collation will change the sorted result after the operation. Valid for union, union all, Intersect, minus.

    Attention:

    1,union can merge result sets with different field names but with the same data type;

    2, if the field name has a different result set to union, then the ORDER BY clause for this field will be invalidated.

    =============================================================================================================== ==

    The operation of intersect and minus is basically consistent with the Union, and here we summarize:

    Union, which is combined with two result sets, excluding duplicate rows, and sorting the default rules;

    Union all, which is set up for two result sets, including repeating rows, without sorting;

    Intersect, the intersection of two result sets, excluding duplicate rows, and the sorting of the default rules;

    Minus, a differential operation on two result sets, excluding duplicate rows, and sorting the default rules.

    The ORDER BY clause can be specified in the last result set to change the ordering method.

Oracle Union Usage

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.