我希望标题不要太混乱。我有以下1对n的关系。
用户
+---------------+------------------+
| Field | Type |
+---------------+------------------+
| id | int(11) unsigned |
| title_id | int(11) unsigned |
| firstname | varchar(255) |
| lastname | varchar(255) |
+---------------+------------------+
用户课程
+------------+------------------+
| Field | Type |
+------------+------------------+
| id | int(11) unsigned |
| user_id | int(11) |
| course_id | int(11) |
+------------+------------------+
一个用户可以有多个课程。假设我想得到所有用户,其中用户有课程1、2和3。这在一个查询中是可能的吗?
提前谢谢。
2条答案
按热度按时间pjngdqdw1#
我会用一个
WHERE IN
子句来获取课程列表后面的所有用户。sqlfiddle公司
baubqpgj2#
使用
JOIN
与WHERE
让所有的用户都了解他们的课程。然后,将组\u concat与GROUP BY
以逗号分隔的值获取用户的所有课程。最后,利用find\ in\ u set函数,检查逗号分隔的课程中是否有1、2和3。
案例1:如果您想找到所有这些用户,其中至少选择了课程id 1、2和3,那么使用
FIND_IN_SET
具体如下:案例2:如果要查找仅选择课程id 1、2和3的所有用户,请使用以下选项: