IN查询在mysql子查询中不起作用group_concat

时间:2017-09-18 14:35:04

标签: mysql

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

2 个答案:

答案 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()不会对表格列有效,只针对()内的列表