簡體   English   中英

具有相同值的MySQL Left Join查詢問題

[英]MySQL Left Join query issue with same values

我正在嘗試使它下面的查詢計數來自具有用戶名的另一個表中的行,然后計算具有殺手級的死亡。 stats表中的每個用戶名都有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列。 當然,您將擁有相同的COUNT 嘗試使用DISTINCT

表達式count(pvtable.killer)對結果集中pvtable.killer值具有非NULL的行數進行計數。 可能對於killerusername ,該值永遠不會為NULL ,因此它們將返回相同的值。

也許您想計算不同的值:

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";

我想補充一點,回答您的問題異常困難。 您應該真正提供樣本數據和所需的結果,以及嘗試的查詢。 經驗表明,期望的結果在有效地傳達問題方面做得很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM