gpt4 book ai didi

mysql - 获取数据库中每个不同值的总和

转载 作者:行者123 更新时间:2023-11-29 03:05:14 25 4
gpt4 key购买 nike

我有一个 Fantasy Football 经理和他们每支球队的 15 名球员的数据库。我可以执行以下操作以列出其中包含“Robin Van Persie”的所有球队。

SELECT * 
FROM `players`
WHERE MATCH(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15)
AGAINST ('Robin Van Persie' IN BOOLEAN MODE)

我可以这样做来计算其中有多少个“Robin Van Persie”(只返回一个数字)。

SELECT count(*) 
FROM `players`
WHERE MATCH(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15)
AGAINST ('Robin Van Persie' IN BOOLEAN MODE)

但是有没有办法让我得到一个类似这样的列表呢?

Count | Player Name
-------------------------
62 | Robin Van Persie
12 | Wayne Rooney
22 | Michu
31 | Theo Walcott

对于数据库中的每个不同值?

最佳答案

你真的想要三张 table 。

表 1
在“玩家”表中,您有 2 列:主要 ID 和所有玩家的列表。

表 2
“经理”表也有 2 列:每个经理姓名和一个主要 ID。

表 3
“managers_players”表将每个经理的主要 ID 与其团队中每个球员的主要 ID 相关联。所以从技术上讲,这个表有 3 列:表主 ID、经理 ID 和玩家 ID。所以这个表将有多个相同经理 ID 和相同玩家 ID 的实例。

使用这种结构,您可以运行这样的查询(可能需要在内连接上使用“二进制文件”):

SELECT m.name, count(mp.player_id) as count
FROM managers_players mp
inner join managers m
on mp.manager_id = m.id
inner join players p
on p.id = mp.player_id
group by m.id
order by count DESC;

此架构还可以让查看每个经理团队中的球员变得非常容易:

SELECT p.name
FROM managers_players mp
inner join managers m
on m.id = mp.manager_id
inner join players p
on p.id = mp.player id
where m.name like '%Manager Name%';

或者执行 select m.name 并将 where 子句更改为 p.name 以查看拥有特定球员的所有经理。

关于mysql - 获取数据库中每个不同值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16705003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com