簡體   English   中英

MySQL LEFT JOIN查詢顯示相同的值

[英]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"

DEMO

為此,請使用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

DEMO

COUNT(foo)COUNT(bar)都計算結果集中的行數,在這兩種情況下您都可以說COUNT(*)

例如,您需要COUNT(*) FROM ... GROUP BY killer以獲得COUNT(*) FROM ... GROUP BY killer的數量。 不確定表的結構將為您提供完整的答案。

暫無
暫無

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

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