用于连接2个表的SQL查询,其中一个表在一个字段中具有多个值

时间:2018-03-19 14:55:51

标签: mysql sql database laravel

表1如下

User_Option_Experience


user_id | teaching_in 
        |  
111     |   1,2,3
112     |   1,4
113     |   4,2

表2如下

Teaching_in


IdTeaching | name
           |  
1          |   Biology
2          |   Chemistry
3          |   Mathematics

现在我想要的是输出用户(教师)教授的所有科目名称的输出,因为从表中看到的一个用户可以教授很多科目

例如,我想要id为111的用户的所有主题

我尝试了这个但没有成功,因为它只返回一条记录

select teaching_in.name 
  from teaching_in 
  left 
  join users_options_experience 
    on user_options_experience.teaching_in = teaching_in.IdTeachingin 
 where user_options_experience.user_id = 15605

2 个答案:

答案 0 :(得分:0)

选择a.user_id,         GROUP_CONCAT(b.name ORDER BY b.IdTeaching)DepartmentName 来自User_Option_Experience a         INNER JOIN Teaching_in b             ON FIND_IN_SET(b.IdTeaching,a.teaching_in)> 0 GROUP BY a.user_id

回答 enter link description here

答案 1 :(得分:0)

SELECT  b.name 
FROM    User_Option_Experience a
        INNER JOIN Teaching_in b
            ON FIND_IN_SET(a.teaching_in , b.IdTeaching )
WHERE a.user_id=111;

使用mysql的FIND_IN_SET函数

希望这会对你有所帮助。