在mysql查询中遇到LIKE CONCAT问题

时间:2015-02-18 17:45:20

标签: mysql

我有两个表:userstabletop_questionsusers表格中有一列名为institution_primary_functiontabletop_questions列中有一列名为target_institutionsusers.institution_primary_function = C的示例值以及tabletop_questions.target_institutions = A,B,C,D,E,F的示例值。

我尝试使用以下查询仅返回users.institution_primary_function(逗号分隔列表)中包含tabletop_questions.target_institutions值的那些行。

SELECT * FROM tabletop_questions
LEFT JOIN users
  ON users.institution_primary_function 
  LIKE CONCAT( '%,', tabletop_questions.target_institutions, ',%' ) 

但是,使用此查询时,tabletop_questions表中的每一行都会返回,并且联接的users表中的所有值都为NULL。你能告诉我哪里出错了吗?

1 个答案:

答案 0 :(得分:1)

您应该规范化数据,因为搜索逗号分隔的字符串效率不高。然而,MySQL包含一个名为FIND_IN_SET()的函数。使用INNER JOIN代替LEFT OUTER JOIN仅返回匹配的记录。

SELECT * FROM tabletop_questions
INNER JOIN users
  ON FIND_IN_SET(users.institution_primary_function,
    tabletop_questions.target_institutions)