我正在尝试这样做,以便下面的查询计算来自另一个具有用户名的表的行,然后是具有杀手的死亡。统计信息表中每个用户名有1行,但pvp表中有多行用户名。出于某种原因,死亡列与杀戮列的数量相同,有谁知道为什么?这是我的查询,这里是一个sql小提琴,我想我得到了正确的idk如何使用sqlfiddle:http://sqlfiddle.com/#!2/b793b/1
SELECT
*,
COUNT(pvptable.killer) as kills,
COUNT(pvptable.username) as deaths,
ROUND(COUNT(pvptable.killer) / COUNT(pvptable.username), 2) as kd
FROM
stats as st
LEFT JOIN pvp as pvptable ON pvptable.killer=st.username
WHERE
st.username="Username";
答案 0 :(得分:0)
您正在计算同一个表的2列。当然,你将拥有相同的COUNT
。尝试使用DISTINCT
。
答案 1 :(得分:0)
表达式count(pvtable.killer)
计算结果集中pvtable.killer
的非NULL值的行数。据推测,NULL
或killer
的值绝不会username
,因此它们会返回相同的值。
也许您想要计算不同的值:
SELECT
*,
COUNT(distinct pvptable.killer) as kills,
COUNT(distinct pvptable.username) as deaths,
ROUND(COUNT(distinct pvptable.killer) / COUNT(distinct pvptable.username), 2) as kd
FROM
stats as st
LEFT JOIN pvp as pvptable ON pvptable.killer=st.username
WHERE
st.username="Username";
我想补充一点,回答你的问题非常困难。您应该提供样本数据和所需结果,以及您尝试的查询。经验表明,期望的结果可以很好地有效地传达问题。