作为计算字段使用子查询

select cust_name,cust_state,
(select count(*) from orders where orders.cust_id = customers.cust_id) 
as orders 
FROM customers 
order by cust_name;
```_

[分析:这 条 SELECT 语 句 对 customers 表 中 每 个 客 户 返 回 3 列 :cust_name 、 cust_state 和 orders 。 orders 是一个计算字段,它是由圆括号中的子查询建立的。该子查询对检索出的每个客户执行一次。在此例子中,该子查询执行了5次,因为检索出了5个客户。]

我不太明白这个子查询为什么执行会对每一个顾客执行了5次,有没有大佬知道,能用比较通俗的说法解释下,谢谢

首先,这个子查询是作为计算字段嵌套在主查询中的。在主查询中,我们查询了 customers 表,获得了5条记录。对于每一条主查询的记录,都会执行一次嵌套的子查询。因此,这个子查询会被执行5次,而不是对每个客户执行了5次。

在子查询的 SQL 语句中,我们查询了 order 表,只不过它的条件是 orders.cust_id = customers.cust_id,也就是只查询该客户的订单。因此,对于每一条主查询的记录,子查询会返回该客户的订单数量。这个订单数量会作为一个计算字段 orders,和主查询中的 customers 表的其他列一起返回。

希望这样解释可以让你更好地理解这个子查询的执行过程。