Mysql 必知必会原文阅读笔记六(子查询)

一、xmind笔记,子查询

Mysql 必知必会原文阅读笔记六(子查询)_第1张图片

 

二、实操

1、理解子查询

简单说来就是,sql 查询语句可以嵌套。在写sql语句的时候尽量注意美化sql,不然sql语句非常难懂。如下面sql:

SELECT * from o_export_additional 
WHERE order_no  IN (SELECT order_no 
                                        FROM o_order)

2、子查询过滤

Mysql 必知必会原文阅读笔记六(子查询)_第2张图片

 3、利用子查询作为计算字段

这里我想直接应用原文的例子,这样比较清晰;

customers 表 cust_id, cust_name, cust_state

orders表有,cust_id, 还有order信息

Using Subqueries As Calculated Fields
Another way to use subqueries is in creating calculated fields. Suppose you want to display the total number of orders placed by every customer in your customers
table. Orders are stored in the orders table along with the appropriate customer ID.
To perform this operation, followthese steps:
1. Retrieve the list of customers from the customers table.
2. For each customer retrieved, count the number of associated orders in the orders table.
As you learned in the previous two chapters, you can use SELECT COUNT(*) to count rows in a table, and by providing a WHERE clause to filter a specific customer ID,
you can count just that customer's orders. For example, the following code counts the number of orders placed by customer 10001 :
Input
SELECT COUNT(*) AS orders
FROM orders
WHERE cust_id = 10001;
如果只用一个sql解决,那就是用子查询了,见下面sql:
To perform that COUNT(*) calculation for each customer, use COUNT* as a subquery. Look at the following code:
Input
SELECT cust_name,
cust_state,
(SELECT COUNT(*)
FROM orders
WHERE orders.cust_id = customers.cust_id) AS orders
FROM customers
ORDER BY cust_name;
 
Output
+----------------+------------+--------+
| cust_name | cust_state | orders |
+----------------+------------+--------+
| Coyote Inc. | MI | 2 |
| E Fudd | IL | 1 |
| Mouse House | OH | 0 |
| Wascals | IN | 1 |
| Yosemite Place | AZ | 1 |
+----------------+------------+--------+

你可能感兴趣的:(数据库,mysql,数据库,database)