自学书籍.MySQL必知必会 - 使用子查询

子查询:

1.任何SQL语句都是查询,SQL语句还允许创建子查询,即在其它查询中的查询

利用子查询进行过滤:

1.列出订购物品TNT2的所有客户?

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

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

作为计算字段使用子查询:

1.查询每个客户的订单总数?

SELECT cust_id, cust_name, (SELECT COUNT(*) AS num_order
                            FROM orders
                            WHERE orders.cust_id = customers.cust_id)
FROM customers;

说明:涉及外部查询的子查询称为相关子查询,为了限制有歧义的列名,通常使用完全限定域名

你可能感兴趣的:(自学书籍.MySQL必知必会 - 使用子查询)