问题描述
- 为什么图中的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就没意义了
时间: 2024-09-20 00:03:47