且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SQL 必知必会·笔记<9>使用子查询

更新时间:2021-09-26 11:40:24

子查询(subquery),即嵌套在其他查询中的查询。

1. 利用子查询进行过滤

SELECT 语句中,子查询总是从内向外处理。示例:

SQL 必知必会·笔记<9>使用子查询
1 SELECT cust_name, cust_contact
2 FROM Customers
3 WHERE cust_id IN (SELECT cust_id
4                   FROM Order
5                   WHERE order_num IN (SELECT order_num
6                                       FROM OrderItems
7                                       WHERE prod_id = 'RGAN01'));
SQL 必知必会·笔记<9>使用子查询

 注意:只能是单列

作为子查询的SELECT 语句只能查询单个列。企图检索多个列将返回错误

提示:格式化SQL

包含子查询的SELECT 语句难以阅读和调试,它们在较为复杂时更是 如此。如上所示,把子查询分解为多行并进行适当的缩进,能极大地 简化子查询的使用。

提示:谨慎使用子查询

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

2. 作为计算字段使用子查询

示例:

SQL 必知必会·笔记<9>使用子查询
1 SELECT cust_name,
2        cust_state,
3        (SELECT COUNT(*)
4         FROM Orders
5         WHERE Orders.cust_id = Customers.cust_id) AS orders
6 FROM Customers
7 ORDER BY cust_name;
SQL 必知必会·笔记<9>使用子查询
本文转自gyzhao博客园博客,原文链接:http://www.cnblogs.com/IPrograming/p/3291731.html,如需转载请自行联系原作者