count(1)如何在sql中使用两个表

时间:2014-04-15 10:55:10

标签: sql join

我有两个表客户和销售。

客户:

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

  1. 任何人都可以解释它背后的逻辑吗?
  2. 如果有的话,还会使用什么样的联接?
  3. 如果销售人员有第3列,那么计数结果就会变为9.那怎么会发生呢?
  4. 提前致谢。

3 个答案:

答案 0 :(得分:3)

由于表未与键列连接,因此它变为CROSS JOIN。因此,客户行数*销售行数(3 * 2)总共变为6行,而count函数返回结果

答案 1 :(得分:1)

这只是CARTESIAN PRODUCT。

customer表的每一行都与sales表的每一行连接在一起。

例如,

1001 aaa a 1001 ddd d 1002 eee e - >从客户表中获取一行时,链接与销售表中的所有行。

结果是3 * 2 = 6(客户表中有3行,销售表中有2行),同样3 * 3 = 9.(每个表中有3行)

这是它背后的逻辑。

答案 2 :(得分:0)

1)6是笛卡尔积的结果3 x 2

2)1)没有使用连接:它是笛卡尔积;

3)9是笛卡尔积的结果3×3