我有两张桌子:
r2可以有几行,其中k1作为辅助键,例如可以执行SUM。
我的问题是,当我尝试
时select
r1.col_n,
sum(r2.col_m),
**count(*)as total**
from
r1,r2
where
r1.k1 = r2.k1
此处的COUNT(*)将返回出现的次数或r2.k1我明白这是它想要做的事情,这就是查询的含义。
我的问题是(并且不要问我为什么因为r1中有很多辅助键...大声笑)我希望COUNT()返回该联合查询中r1.k1的出现次数而不是r2.k1 ...我需要r1上的总和(r2.col_m)和计数()......
你能在这帮我吗?答案 0 :(得分:0)
您可以使用DISTINCT:
select
r1.col_n,
sum(r2.col_m),
count(DISTINCT r1.k1) as total
from
r1 INNER JOIN r2 ON r1.k1 = r2.k1
还有其他选择(例如,使用子查询进行计数,然后使用r2加入此子查询)但COUNT(DISTINCT r1.k1)应该足以满足您的问题。
此外,使用JOIN会更好,所以我转换了:
FROM r1, r2
WHERE r1.k1=r2.k2
使用以下语法:
FROM
r1 INNER JOIN r2
ON r1.k1=r2.k2