说我有以下表格
user_table
id username
1 abc
2 def
3 ghij
courses_table
id title
1 csc
2 math
3 syn
user_courses
user_id course_id
2 1
1 3
2 3
我想选择参加课程 1 和 3 的用户名,而不是至少 1 或 3,我的意思是 1 和 3
我尝试了以下 mysql 查询
SELECT DISTINCT u.* FROM user_table as u LEFT JOIN user_courses as uc ON uc.user_id = u.id WHERE uc.course_id = 1 AND uc.course_id=3;
SELECT DISTINCT u.* FROM user_table as u LEFT JOIN user_courses as uc ON uc.user_id = u.id WHERE uc.course_id IN (1,3);
SELECT DISTINCT u.* FROM user_table as u LEFT JOIN user_courses as uc ON uc.user_id = u.id WHERE uc.course_id IN (1,3) AND uc.user_id = u.id ;
执行的第一个和第三个查询没有显示结果,第二个查询显示所有至少有 course_id 1 或 3 的用户
如果您想知道为什么我使用 LEFT JOIN,这是因为我需要连接表的结果,而上面的代码行只是一个示例,我使用 LEFT 连接从大约 9 个表中获取数据。
请问有什么帮助吗?谢谢
SELECT DISTINCT u.* FROM user_table as u LEFT JOIN user_courses as uc ON uc.user_id = u.id WHERE uc.course_id IN( 1,3) AND uc.user_id = 2 ";
这显示了我想要的结果,它的输出“def”,但我不能使用 user_id 作为静态值(本例中的数字 2)