MySQL左连接查询问题具有相同的值

时间:2014-01-18 00:51:18

标签: php mysql sql left-join

我正在尝试这样做,以便下面的查询计算来自另一个具有用户名的表的行,然后是具有杀手的死亡。统计信息表中每个用户名有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";

2 个答案:

答案 0 :(得分:0)

您正在计算同一个表的2列。当然,你将拥有相同的COUNT。尝试使用DISTINCT

答案 1 :(得分:0)

表达式count(pvtable.killer)计算结果集中pvtable.killer的非NULL值的行数。据推测,NULLkiller的值绝不会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";

我想补充一点,回答你的问题非常困难。您应该提供样本数据和所需结果,以及您尝试的查询。经验表明,期望的结果可以很好地有效地传达问题。

相关问题