IN查询无法在mysql的sub_query中工作 请看 - :
SELECT (SELECT GROUP_CONCAT( text )
FROM course_intersted_in_list
WHERE id IN ( urd.interested_course )) as interested_course_text,
urd.*
from user_registration_data as urd
此处 urd.interested_course 的某些用户的值为1,2,3,4
user_registration_data 表就像
id interested_course
1 1,2,3,4,5
2 1,4,5
course_intersted_in_list 表就像
id interested_course
1 mbbs
2 dental
3 basic
答案 0 :(得分:2)
由于interested_course
有逗号分隔ID,您可以使用find_in_set
搜索csv字符串中的值:
SELECT (SELECT GROUP_CONCAT( text )
FROM course_intersted_in_list
WHERE find_in_set(id, urd.interested_course)
) as interested_course_text,
urd.*
from user_registration_data urd;
另外,我建议远离RDBMS中的CSV数据并规范化数据。这样你就可以得到一个可扩展的系统。
答案 1 :(得分:1)
您可以改为使用MySQL FIND_IN_SET
:
SELECT (SELECT GROUP_CONCAT( text )
FROM course_intersted_in_list
WHERE find_in_set(id, urd.interested_course)) as interested_course_text,
urd.*
from user_registration_data as urd
IN()
不会对表格列有效,只针对()
内的列表