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;