MySql学习之组合查询

组合查询:

  MySQL允许执行多条查询,并将结果作为单个查询结果集返回,这些组合查询通常称之为(union)或复合查询

    有两种基本情况:

       在单个查询中从不同的表返回类似结构的数据;
       对单个表执行多个查询,按单个查询返回数据。

使用union。只是给出每条SELECT语句,在各条语之间放上关键字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);

 

         union的运用规则:

     UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合4条SELECT语句,将要使用3个UNION关键字)。

            UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过各个列不需要以相同的次序列出)。

     列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型(例如,不同的数值类型或不同的日期类型)。

 关注点:

  1、union是默认去处重复的行的,如果不想去除可用union all

   2、对于查询结果排序

      在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。MySQL将用它来排序所有SELECT语句返回的所有结果

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;

 

   

 

posted @ 2017-03-10 15:15  mslog  阅读(203)  评论(0编辑  收藏  举报