我有两个表:users
和 tabletop_questions
。 users
表有一个名为 institution_primary_function
的列,tabletop_questions
有一个名为 target_institutions
的列。 users.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
。你能告诉我哪里出错了吗?
最佳答案
您应该规范化您的数据,因为通过逗号分隔的字符串进行搜索效率不高。然而,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)
关于mysql - mysql 查询中的 LIKE CONCAT 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28590287/