gpt4 book ai didi

mysql - 查看是否存在两个表行,内部连接到另一行

转载 作者:行者123 更新时间:2023-11-29 11:38:44 24 4
gpt4 key购买 nike

想象一下,我有一项运动,其中有一张 table 、MATCH、一张 table PLAYER 和一张 table MATCH_PLAYER。 MATCH_PLAYER 表显然将一场比赛与某些球员联系起来,在 MATCH_PLAYER 表中我存储了每个球员的位置、得分等信息。 MATCH 表包含哪支球队获胜、比赛日期等。

当您提供玩家 ID 时,我可以使用此查询“player_id 玩游戏时的胜率百分比是多少”:

    SELECT
sum(case when m.win_left = mp.left then 1 else 0 end) * 100.00
/ count(*) as win_percentage
FROM
match m
inner join match_player mp
on mp.match_id = m.id
WHERE mp.player_id = [whatever]

但是,我不知道如何说“当player_id x和player_id y一起玩时,胜率是多少”。

这显然是数据库背后的基本思想,但我一生都无法弄清楚我想做的事情的术语,因此搜索它很困难。

最佳答案

只需加入牌 table 两次 - 每个玩家一次:

SELECT
SUM(CASE WHEN (m.win_left = mp.left) AND (M.win_dire = MP2.left) THEN 1 ELSE 0 END) * 100.00
/ COUNT(*) AS win_percentage
FROM
Match M
INNER JOIN Match_Player MP1 ON
MP1.match_id = M.id AND
MP1.player_id = [whatever]
INNER JOIN Match_Player MP2 ON
MP2.match_id = M.id AND
MP2.player_id = [whatever #2]

如果您要超过两个或三个玩家,那么随着玩家数量的增加,通过集合匹配可能会更有效,但对于您的情况,这可能是最快的。

关于mysql - 查看是否存在两个表行,内部连接到另一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36178018/

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