最近看MySql必知必会 一个例子有点不解?

z752964360 2011-04-04 04:10:48

SELECT cust_name,
cust_state,
(SELECT COUNT(*)
FROM orders
WHERE oders.cust_id = customers.cust_id) AS orders
FROM customers
ORDER BY cust_name;


上面得SOL会返回customers表中的每个行,和他们在order表中出现的次数。
书上说:子查询总是从内向外处理。
但是

SELECT COUNT(*)
FROM orders,customers
WHERE oders.cust_id = customers.cust_id)



只会返回一行就是表中的行数!

怀疑从内向外执行!求解!
...全文
87 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
z752964360 2011-04-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acmain_chm 的回复:]

《数据库系统概论(第四版)》 王珊 萨师煊 高等教育出版社 (掌握基础知识和概念)

然后再粗略浏览一遍MYSQL的官方手册。(方便以后查找,避免类似于考试的时候,给你本政治书也不知道答案在第几章,第几页)MySQL官方……
[/Quote]
灰常讨厌讨厌中国的大学教材!可读性太差,这本书作者是Ben Forta 很友好,通俗易懂!
既然ACMAIN_CHM老大推荐,去书店的时候看看!找一本好教材是一项hardwork!
ACMAIN_CHM 2011-04-04
  • 打赏
  • 举报
回复
[Quote]我认为是从外层的查询 得到customer.cust_id 在内层的查询用![/Quote]正确。
z752964360 2011-04-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acmain_chm 的回复:]

由于你不肯贴出这句话的上下文,所以无法说书中讲的对与不对
[/Quote]

ACMAIN仁兄 你回复的太快了!
z752964360 2011-04-04
  • 打赏
  • 举报
回复
这个子查询的目的是显示customers表中每个客户的订单总数,订单在orders表中。
z752964360 2011-04-04
  • 打赏
  • 举报
回复
我认为是从外层的查询 得到customer.cust_id 在内层的查询用!
ACMAIN_CHM 2011-04-04
  • 打赏
  • 举报
回复
建议看正规学校教材。 由于你不肯贴出这句话的上下文,所以无法说书中讲的对与不对。 同样你也不愿意写出你自己的理解,所以也无法对你的理解进行评论。



先读三遍《数据库系统概论(第四版)》 王珊 萨师煊 高等教育出版社 (掌握基础知识和概念)

然后再粗略浏览一遍MYSQL的官方手册。(方便以后查找,避免类似于考试的时候,给你本政治书也不知道答案在第几章,第几页)MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html

z752964360 2011-04-04
  • 打赏
  • 举报
回复
《MySql必知必会》
入门级的书,讲子查询的!
ACMAIN_CHM 2011-04-04
  • 打赏
  • 举报
回复
(SELECT COUNT(*)
FROM orders
WHERE oders.cust_id = customers.cust_id) AS orders

并不等同于

SELECT COUNT(*)
FROM orders,customers
WHERE oders.cust_id = customers.cust_id)

[Quote]书上说:子查询总是从内向外处理。[/Quote]什么书上讲的?上下文是什么?你是如何理解的?

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧