zoukankan      html  css  js  c++  java
  • MySQL Crash Course #09# Chapter 17. Combining Queries: UNION

    INDEX

    UNION Rules

    As you can see, unions are very easy to use. But a few rules govern exactly which can be combined:

    • A UNION must be comprised of two or more SELECT statements, each separated by the keyword UNION (so, if combining four SELECT statements, three UNION keywords would be used).

    • Each query in a UNION must contain the same columns, expressions, or aggregate functions (although columns need not be listed in the same order).

    • Column datatypes must be compatible: They need not be the exact same type, but they must be of a type that MySQL can implicitly convert (for example, different numeric types or different date types).

    Aside from these basic rules and restrictions, unions can be used for any data retrieval tasks.

    WHERE VS. UNION

    For the most part, combining two queries to the same table accomplishes the same thing as a single query with multiple WHERE clause conditions. In other words, any SELECT statement with multiple WHERE clauses can also be specified as a combined query, as you'll see in the section that follows. The performance of each of the two techniques, however, can vary based on the queries used. As such, it is always good to experiment to determine which is preferable for specific queries.

    UNION VS. UNION ALL

    The UNION automatically removes any duplicate rows from the query result set (in other words, it behaves just as multiple WHERE clause conditions in a single SELECT would). Because vendor 1002 creates a product that costs less than 5, that row was returned by both SELECT statements. When the UNION was used, the duplicate row was eliminated.

    This is the default behavior of UNION, but you can change this if you so desire. If you do, in fact, want all occurrences of all matches returned, you can use UNION ALL instead of UNION.

    Sorting Combined Query Results

    SELECT statement output is sorted using the ORDER BY clause. When combining queries with a UNION, only one ORDER BY clause may be used, and it must occur after the final SELECT statement. There is very little point in sorting part of a result set one way and part another way, and so multiple ORDER BY clauses are not allowed.

    The following example sorts the results returned by the previously used UNION:

    SELECT vend_id, prod_id, prod_price
    FROM products
    WHERE prod_price <= 5
    UNION
    SELECT vend_id, prod_id, prod_price
    FROM products
    WHERE vend_id IN (1001,1002)
    ORDER BY vend_id, prod_price;
  • 相关阅读:
    数据库——数据操作——数据的增删改(8)
    数据库——完整性约束(7)
    数据库——数据类型(6)
    生成代码的代码 之 POJO生成器 之二 模板实现
    生成代码的代码 之 错误代码类生成器
    生成代码的代码 之 POJO生成器
    [翻译] Trident-ML:基于storm的实时在线机器学习库
    Vim实用技巧系列
    基于循环数组的无锁队列
    Vim实用技巧系列
  • 原文地址:https://www.cnblogs.com/xkxf/p/8881053.html
Copyright © 2011-2022 走看看