我有以下两个表格:
球员
id name
p1 name1
p2 name2
p3 name3
p4 name4
匹配
id winner loser
m1 p1 p2
m2 p3 p4
我想要的是编写一个返回以下内容的select语句:
id name matches wins
p1 name1 1 1
p3 name3 1 1
p2 name2 1 0
p4 name4 1 0
这基本上是为了返回锦标赛排名,按胜利次数排序。
答案 0 :(得分:0)
一种方法使用相关子查询:
select p.*,
(select count(*) from matches m where p.id in (m.winner, m.loser)
) as matches,
(select count(*) from matches m where p.id = m.winner
) as wins
from players p
order by wins desc;
答案 1 :(得分:0)
您可以向Players表添加2列或创建名为Tournament的新表。您可以在管理面板上手动(手动)注册锦标赛玩家。 如果要向Players表添加2列。 U将查询玩家获胜分数,查询后获取您的MySQL行数功能,您将获得很多赢得玩家。在writenitnto锦标赛页面之后。 (注意:抱歉英语不好,我想说英语。请尝试了解我。)
答案 2 :(得分:0)
另一种方法是使用两个外连接:
select p.id,
p.name,
count(distinct m.id) as matches,
count(distinct w.id) as wins
from players p
left join matches m on p.id in (m.winner, m.loser)
left join matches w on w.winner = p.id
group by p.id, p.name
order by wins desc, p.name