MySQL子查询

到现在为止,我们已经表明,以SELECT声明是一个简单的查询。该单个语句从单个数据库表中检索数据。SQL还同意建立一个子查询。即嵌套在其他查询的查询。

下列实施例给出嵌套查询。


一种表示订单信息存储,包含订单号,客户ID。订购日期。例如以下所看到的:



一张表示存储订单物品信息,例如以下:



另一张表存储的是客户的信息。例如以下:



假如如今的需求是要找出订购物品TNT2的全部客户。我们发现通过第二张订购物品表能够获取到订单编号,根据订单编号,能够再第一张订单信息表中获取到对应的客户id。通过客户id即能够在第三张表中查询到客户信息了:

因此有 TNT2 ----> order_num ----> cust_id-----> cust_name。根据之前的SELECT语句能够分条来查询:



如今能够把第一个查询变为第二个查询的子查询来做:



同理我们能够把三个查询语句嵌套到一条SQL语句中,嵌套的SQL语句由内向外计算。即最里面的SELECT语句计算出的结果给外一层的SELECT语句来用:



另外还能够将计算字段作为子查询, 如,我们须要计算出custem表中以个客户须要支付多少钱?先用一个SELECT找出该客户有哪些订单,再将这些订单的价钱加在一起:

先看cust_id = 10001的订单 20005,20009相加的情况:



SUM()函数是进行列相加,正好能够把total当成一列来使用,进行求和, IN(20005,20009)转换为SELECT语句就比較简单了:



以下语句是计算每个客户所须要支付的总金额,是对以上SQL语句的进一步改进,一次求出全部的客户的应付金额:


版权声明:本文博客原创文章,博客,未经同意,不得转载。

posted @ 2015-07-22 12:36  phlsheji  阅读(329)  评论(0编辑  收藏  举报