[英]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的行數進行計數。 可能對於killer
或username
,該值永遠不會為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.