SQL 必知必会 第 11~? 课

CH11 子查询

子查询

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

对于能嵌套的子查询的数目没有限制,不过在实际使用时由于性能的限制,不能嵌套太多的子查询。

示例:

1
2
3
4
5
6
7
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 = 'RGAN01'));

连接表

从两个表查数据的时候,如果不指定等于字段,MySQL 默认情况下会对两个表做笛卡儿积。任意两列都连接在一起。

比如下面这条语句:

1
2
SELECT sname, cno, degree
FROM student, score;

不仅仅 = 可以作为连接表的运算符,其他运算符也可以作为连接表的运算符,因为做表的连接是按照笛卡尔积的规则,一行一行比较来确定的。