gpt4 book ai didi

mysql - 如果发现一个逗号分隔记录与另一逗号分隔记录匹配,则获取记录

转载 作者:行者123 更新时间:2023-11-29 19:09:46 25 4
gpt4 key购买 nike

我有3张 table

  1. 用户
  2. 服务
  3. 用户服务

用户表

Id  |  Name   | Status
------------------------
1 | User1 | y
2 | User2 | y
3 | User3 | y
4 | User4 | y

服务表

Id  |  ServiceName   | Status
------------------------
1 | Service1 | y
2 | Service2 | y
3 | Service3 | y
4 | Service4 | y

用户服务表

Id  |  UserId   | ServiceId   | Status
-----------------------------------------
1 | 1 | 1 | y
2 | 1 | 3 | y
3 | 1 | 2 | y
4 | 1 | 4 | y
5 | 2 | 2 | y
6 | 2 | 3 | y
7 | 2 | 4 | y
8 | 3 | 1 | y
9 | 3 | 3 | y
10 | 3 | 4 | y
11 | 3 | 2 | y

我将以逗号分隔的字符串形式获取服务 ID,例如 1,2,3 作为输入,并且我需要检查哪个用户提供所有服务。

例如;用户1提供服务1,3,2,4,并且1,2,3是1,3,2,4的子集,所以应该返回这条记录。

用户2提供服务2,3,4,因此1,2,3不是2,3,4的子集,则不应返回该记录。

我尝试过使用FIND_IN_SET 和 GROUP_CONCAT 用户 ID,但它不起作用。

最佳答案

用户服务表可以包含重复项吗?

如果没有,你可以尝试

SELECT UserId FROM userServices 
WHERE serviceId IN (1,2,3)
GROUP BY UserId HAVING COUNT(*) >= 3

(将 1,2,3 替换为输入,将 3 替换为输入中的组数,或者您甚至可以在 SQL 本身中计算它)

关于mysql - 如果发现一个逗号分隔记录与另一逗号分隔记录匹配,则获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43180031/

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