• 技术文章 >数据库 >mysql教程

    mysql 组合查询:什么是组合查询?如何创建组合查询

    巴扎黑巴扎黑2018-05-14 14:49:43原创9244
    什么是组合查询

    多数SQL查询都只包含从一个或多个表中返回数据的单条 SELECT 语句。MySQL也允许执行多个查询(多条 SELECT 语句),并将结果作为单个查询结果集返回。这些组合查询通常称为并(union)或复合查询(compound query)。

    有两种基本情况,其中需要使用组合查询:

    1.在单个查询中从不同的表返回类似结构的数据;

    2.对单个表执行多个查询,按单个查询返回数据。

    组合查询和多个 WHERE 条件 多数情况下,组合相同表的两个查询完成的工作与具有多个 WHERE 子句条件的单条查询完成的工作相同。换句话说,任何具有多个 WHERE 子句的 SELECT 语句都可以作为一个组合查询给出,在以下段落中可以看到这一点。这两种技术在不同的查询中性能也不同。因此,应该试一下这两种技术,以确定对特定的查询哪一种性能更好。

    如何创建组合查询

    可用 UNION 操作符来组合数条SQL查询。利用 UNION ,可给出多条SELECT 语句,将它们的结果组合成单个结果集。

    使用UNION

    UNION 的使用很简单。所需做的只是给出每条 SELECT 语句,在各条语句之间放上关键字 UNION。

    举一个例子,假如需要价格小于等于 5 的所有物品的一个列表,而且还想包括供应商 1001 和 1002生产的所有物品(不考虑价格)。当然,可以利用 WHERE 子句来完成此工作,不过这次我们将使用 UNION 。

    正如所述,创建 UNION 涉及编写多条 SELECT 语句。首先来看单条语句:

    输入:

    select vend_id,prod_id,prod_price from products where prod_price <= 5;

    输出:

    QQ截图20170512092240.png

    输入:

    select vend_id,prod_id,prod_price from products where vend_id in (1001,1002);

    输出:

    QQ截图20170512092436.png

    分析:第一条 SELECT 检索价格不高于 5 的所有物品。第二条 SELECT 使用 IN 找出供应商 1001 和 1002 生产的所有物品。

    为了组合这两条语句,按如下进行:

    输入:

    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);

    输出:

    QQ截图20170512092629.png

    分析:这条语句由前面的两条 SELECT 语句组成,语句中用 UNION 关键字分隔。 UNION 指示MySQL执行两条 SELECT 语句,并把输出组合成单个查询结果集。

    作为参考,这里给出使用多条 WHERE 子句而不是使用 UNION 的相同查询:

    输入:

    select vend_id,prod_id,prod_price from products where prod_price <= 5 or vend_id in (1001,1002);

    在这个简单的例子中,使用 UNION 可能比使用 WHERE 子句更为复杂。但对于更复杂的过滤条件,或者从多个表(而不是单个表)中检索数据的情形,使用 UNION 可能会使处理更简单。

    以上就是mysql 组合查询:什么是组合查询?如何创建组合查询的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:mysql游标不到数据问题以及解决方案 下一篇:MySQL组合查询中UNION排序规则示例
    千万级数据并发解决方案

    相关文章推荐

    • MySQL怎么从二进制内容看InnoDB行格式• 夯实MySQL基础的问题归纳• mysql怎么增加权限• 浅析MySQL中的事务隔离级别,聊聊其实现原理• 怎样使MySQL的索引更高效?
    1/1

    PHP中文网