MySQL查询来获取具有子查询中值之一的列的行

时间:2018-09-11 07:07:15

标签: mysql

我想在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。查询只是为了了解您的上下文

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的以下方法:

select * 
from employee e 
where data_as_string REGEXP CONCAT("'",(select REPLACE(GROUP_CONCAT(name),',','|') 
                                        from department 
                                        where 1=1)),"'")

这对我有用。