我有两个客户和销售表。如何计数(1)与sql中的两个表一起工作
客户:
custid custname loc 1001 aaa a 1002 bbb b 1003 ccc c
销售:
salesid salesname saleloc 1001 ddd d 1002 eee e
我查询
select count(1) from customer, sales
和我得到的计数结果为6
- 任何人都可以解释它背后的逻辑吗?
- 还有,如果使用什么样的连接?
- 如果销售有第三列,则计数结果变为9.那么如何发生?
在此先感谢。
你正在做一个CROSS JOIN,该行的笛卡尔积,因为你没有连接标准。实质上,你在右边的每一行都得到一行 - '3 * 2 = 6' ...'3 * 3 = 9'。 count(1)中的1不重要 - 它只会计算行数(1只是表达式 - 您可能还会使用*) – Charleh
您提到在销售中添加“第三列”?销售表已经有三列。你的意思是“第三排”?另外,如果您执行'SELECT * ...'而不是'SELECT COUNT(1)...',则可以帮助解释这一点。分享并享受。 –
@subee。 。 。你应该避免在'from'子句中使用''''。如果你使用'cross join'(这是等价的)写这个,那么回答你的问题就显而易见了。 –