首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL左联接查询显示相同的值。

问MySQL左联接查询显示相同的值。
EN

Stack Overflow用户
提问于 2014-01-18 00:26:38
回答 2查看 139关注 0票数 0

我正在尝试这样做,以便下面的查询可以计数另一个具有用户名的表中的行数,然后是有杀手的死亡数。stats表中每个用户名有1行,而pvp表中有多行带有用户名。因为某些原因,死亡栏和死亡栏的数量相同,有人知道为什么吗?这是我的问题。这里有一个sql小提琴,我想我做对了,idk如何使用sqlfiddle:http://sqlfiddle.com/#!2/b793b/1

代码语言:javascript
复制
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";
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-18 01:02:34

代码语言:javascript
复制
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

代码语言:javascript
复制
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

演示

票数 1
EN

Stack Overflow用户

发布于 2014-01-18 00:32:59

COUNT(foo)和COUNT(bar)都计算了结果集中的行数,在这两种情况下,您都可以说是COUNT(*)。

例如,你需要COUNT(*) FROM ... GROUP BY killer来获取杀手的数量。不知道表格的结构是什么给你一个完整的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21198444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档