如果我有以下代码,哪个表是count(*)用来计算其中的行数或行数?
SELECT COUNT(*)
FROM region r
JOIN sales_rep s
ON r.id = s.region_id
非常感谢!
答案 0 :(得分:0)
它将整个联接查询中的行计数在内。它与:
SELECT COUNT(*)
FROM
(SELECT * FROM region r
JOIN sales_rep s
ON r.id = s.region_id)
答案 1 :(得分:0)
它正在计算联接中“结果”表的所有记录。该数字将取决于region和sales_rep之间的关系类型。假设您的域是一个区域具有零个或多个sales_rep,并且所有sales_rep具有一个且只有一个区域,那么该计数将始终等于sales_rep的计数。例如:
regions: (id) sales_rep: (id, reg_id)
A 1 A
B 2 A
C 3 B
4 C
count(*) = 4
另一方面,如果sales_rep不能有区域,则排除无区域的区域:
regions: (id) sales_rep: (id, reg_id)
A 1 A
B 2 null
C 3 B
4 C
count(*) = 3
或者,如果sales_rep可以具有多个区域,则结果与第一种情况相同,但是您的计数将更高:
regions: (id) sales_rep: (id, reg_id)
A 1 A
B 1 B
C 2 A
3 B
4 C
count(*) = 5
我绝对建议您进行选择*,以便您可以自己查看发生了什么,然后将其更改为计数。另外,请参阅本文以更好地了解关节:https://www.w3schools.com/sql/sql_join.asp