weixin_43961185 2019-01-08 16:09 采纳率: 0%
浏览 1157

作为计算字段使用子查询

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次,有没有大佬知道,能用比较通俗的说法解释下,谢谢
  • 写回答

1条回答

  • 憧憬blog 2023-03-15 09:10
    关注

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

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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀