[英]MySQL LEFT JOIN query shows same value
我正在嘗試使它下面的查詢計數來自具有用戶名的另一個表中的行,然后計算具有殺手級的死亡。 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";
SELECT st.*,
SUM(pvp.killer = st.username) AS kills,
SUM(pvp.username = st.username) as deaths
FROM stats AS st
LEFT JOIN pvp ON pvp.username = st.username OR pvp.killer = st.username
WHERE st.username = "Username"
為此,請使用GROUP BY
:
SELECT st.*,
SUM(pvp.killer = st.username) AS kills,
SUM(pvp.username = st.username) as deaths
FROM stats AS st
LEFT JOIN pvp ON pvp.username = st.username OR pvp.killer = st.username
GROUP BY st.username
COUNT(foo)
和COUNT(bar)
都計算結果集中的行數,在這兩種情況下您都可以說COUNT(*)
。
例如,您需要COUNT(*) FROM ... GROUP BY killer
以獲得COUNT(*) FROM ... GROUP BY killer
的數量。 不確定表的結構將為您提供完整的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.