【发布时间】:2014-05-29 16:22:58
【问题描述】:
我有两张表 customer 和 sales。
客户:
客户名称 loc 第1001章 第1002章 第1003章销售额:
salesid 销售名称 saleloc 1001 ddd 第1002章我查询
select count(1) from customer, sales
我得到的计数结果为 6
- 谁能解释其背后的逻辑?
- 如果有的话,使用什么样的连接?
- 如果 sales 有第 3 列,则计数结果变为 9。那是怎么发生的?
提前致谢。
【问题讨论】:
-
您正在执行 CROSS JOIN,这是行的笛卡尔积,因为您没有连接条件。本质上,你从左边得到一行,右边的每一行 -
3 * 2 = 6...3 * 3 = 9。count (1)中的 1 无关紧要 - 它只会计算行数(1 只是一个表达式 - 你不妨使用 *) -
您提到在销售中添加“第三列”? sales 表已经有三列。您指的是“第三排”吗?此外,如果您使用
SELECT *...而不是SELECT COUNT(1)...,您也许可以帮助自己解释这一点。分享和享受。 -
@subee 。 . .您应该避免在
from子句中使用,。如果您使用cross join(等效)编写此内容,那么您的问题的答案将是显而易见的。