gpt4 book ai didi

mysql - 一侧的多对多限制

转载 作者:行者123 更新时间:2023-11-30 23:26:31 25 4
gpt4 key购买 nike

我有3张 table

user
id | etc |

game
id | etc

user_game
user_id | game_id

我想创造一种情况,当且仅当他们已经在这 n 个用户之间创建游戏时,n 用户才能创建另一个游戏。

例如,假设我们有 user_ids: 1,2 并且他们都在玩 game_id 1,他们不能在他们之间创建另一个游戏,他们但是,如果 user_id 3 加入游戏,则可以创建一个新游戏。

是否可以查询此类内容,如果可以 - 我该怎么做?尝试玩查询、连接、选择和 where's 的时间太长了:)

编辑:最终结果应该是我查询了一些用户,看看他们是否有资格一起玩(即没有找到那些 n 用户一起玩的记录)。

最佳答案

假设您有一个包含推荐用户列表的表。我将其称为 ProposedUsers。您可以执行以下操作来查找具有这些用户的任何 game_id:

select game_id
from user_game ug join
ProposedUsers pu
on ug.user_id = pu.user_id
group by game_id
having count(distinct ug.user_id) = (select count(distinct user_id) from ProposedUsers)

关于与现有游戏的匹配是否准确(游戏中没有其他用户),您的问题有点不清楚。以上处理子集情况。完全匹配将是:

select game_id
from user_game ug left outer join
ProposedUsers pu
on ug.user_id = pu.user_id
group by game_id
having count(distinct ug.user_id) = (select count(distinct user_id) from ProposedUsers)

关于mysql - 一侧的多对多限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052979/

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