zoukankan      html  css  js  c++  java
  • MySQL基础之使用子查询

    子查询

    SELECT语句是SQL的查询语句, 目前我们所看到的SELECT语句都是简单查询, 即从单个数据库表中检索数据的单条语句。

    任何SQL语句都是查询。但查询一般指的都是SELECT语句

    SQL还允许创建子查询, 即嵌套在其他查询中的查询。

    利用子查询进行过滤

    可以使用子查询把3个查询组合成一条语句。

    MariaDB [crashcourse]> SELECT cust_name, cust_contact FROM customers WHERE cust_id IN (SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id='TNT2'));
    +----------------+--------------+
    | cust_name      | cust_contact |
    +----------------+--------------+
    | Coyote Inc.    | Y Lee        |
    | Yosemite Place | Y Sam        |
    +----------------+--------------+
    2 rows in set (0.001 sec)
    
    MariaDB [crashcourse]> 

    在WHERE中子句中使用子查询能够编写出功能强大并且灵活的SQL语句。对于能嵌套的子查询的数目没有限制, 不过在实际使用时由于性能的限制, 不能嵌套太多的查询。

    在WHERE子句中使用子查询, 应该保证SELECT语句具有WHERE子句相同数目的列, 通常子查询将返回单个列并且与单个列匹配, 但如果需要时也可以使用多个列。

    使用子查询并不总是执行这种类型的数据检索的最有效的方法, 应该它的性能较低

    作为计算字段使用子查询

    使用子查询的另一方法是创建计算字段

    MariaDB [crashcourse]> SELECT cust_name, cust_state, (SELECT COUNT(*) FROM orders WHERE orders.cust_id=customers.cust_id) AS orders FROM customers ORDER BY cust_name;
    +----------------+------------+--------+
    | cust_name      | cust_state | orders |
    +----------------+------------+--------+
    | Coyote Inc.    | MI         |      2 |
    | E Fudd         | IL         |      1 |
    | Mouse House    | OH         |      0 |
    | Wascals        | IN         |      1 |
    | Yosemite Place | AZ         |      1 |
    +----------------+------------+--------+
    5 rows in set (0.003 sec)
    
    MariaDB [crashcourse]> 

    子查询中的WHERE子句与前面使用的WHERE子句稍有不同, 因为它使用了完全限定列名。如果不使用完全限定列名那么会产生歧义, 从而导致结果错误。

    虽然子查询在构造这种SELECT语句时极有用, 但必须注意限制有歧义性的列名。

  • 相关阅读:
    手机浏览器
    一招封住360流氓
    原来在Delphi中的类型是严格匹配的
    Windows 7下面3389远程连接时“超出最大连接数”解决办法
    大家开发过淘宝商城API应用的么?
    adodb.recordset 添加记录后无法取得ID
    VBATrack Picture
    java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化
    VBATrack MsgBox
    VBATrack 暂停3秒运行
  • 原文地址:https://www.cnblogs.com/featherwit/p/13374643.html
Copyright © 2011-2022 走看看