我想在MySQL服务器上进行查询,如果子查询中的值之一包含在列字符串中,则Query应该给出行。
我这里有很多桌子。
例如:
Employee
| id | name |...| data_as_string |
此处data_as_string
可能包含JSON格式的部门名称。
我有子查询,它将根据条件返回一个或多个部门名称。
根据子查询返回的结果,如果employee
表的data_as_string
中包含任何部门名称。它应该列出。我尝试了find_in_set
方法,但是查询给出了一个错误,告诉子查询返回了多于1行。
我的查询是
select *
from employee
where find_in_set((select name
from `department`
where 1=1), `data_as_string`) > 0
此处的实际条件不是1 = 1。查询只是为了了解您的上下文
答案 0 :(得分:0)
我找到了解决问题的以下方法:
select *
from employee e
where data_as_string REGEXP CONCAT("'",(select REPLACE(GROUP_CONCAT(name),',','|')
from department
where 1=1)),"'")
这对我有用。