多数SQL查询都只包含从一个或多个表返回数据的单条select语句。MYSQL也允许执行多个查询并将结果作为单个查询结果集返回。
两种基本情况,其中需要使用组合查询:
①在单个查询中从不同的表返回类似结构的数据。
②对单个表执行多个查询,按单个查询返回数据。
使用union
使用union来合并多个select语句的结果,会自动取消重复行,使用union all 不会取消重复行。
-- 合并 -- 取商品价格在[10,30]的物品,和供应商1002和1003提供的所有物品。 SELECT vendor_id, product_name, product_price FROM _products WHERE product_price > 10 AND product_price < 30 UNION SELECT vendor_id, product_name, product_price FROM _products WHERE vendor_id IN (1002, 1003); -- union all SELECT vendor_id, product_name, product_price FROM _products WHERE product_price > 10 AND product_price < 30 UNION ALL SELECT vendor_id, product_name, product_price FROM _products WHERE vendor_id IN (1002, 1003);
select语句的输出用order by字句来排序,在union组合查询时,只能使用一条order by语句,必须出现在最后一个select语句之后。
-- union all SELECT vendor_id, product_name, product_price FROM _products WHERE product_price > 10 AND product_price < 30 UNION ALL SELECT vendor_id, product_name, product_price FROM _products WHERE vendor_id IN (1002, 1003) ORDER BY vendor_id, product_price;
标签:product,vendor,组合,price,查询,mysql,WHERE,id From: https://www.cnblogs.com/dadishi/p/17066066.html