为什么图中的SQL代码,from里面不用填其中一个来源表呢?

为什么图中的代码,
子查询里面的from只有orders这个表没有customers这个表呢?

图片说明

我觉得括号里面from应该有customers,是因为我觉得SQL会先运行括号里面的内容.但实际顺序是怎样的呢?

你这是SELECT里面的子查询,表示用customers.cust_id到orders里面去查找相关的订单数量
并且这时候的子查询每次SELECT只能是出一个值,不允许在select中的子查询查找出多个值,或者多列值。
改写为JOIN相当于:

SELECT  c.cust\_name,
             c.cust\_state,
                         o.order_cn AS orders
  FROM customers c
    LEFT JOIN (SELECT COUNT(*) AS order_cn,cust_id  
                            FROM orders) o
            ON c.cust_id = o.cust_id
ORDER BY c.cust\_name

customers就是外层的那个 customers

它的意思是,取出customers中每个客户的订单数量

子查询就只是查询自己的表就行了

sql不是按顺序执行的 如果都按着顺序执行 那写sql就没意义了