mysql query从subquery中获取具有其中一个值的列的行

4zcjmb1e  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(373)

我想在mysql服务器上查询,如果subquery中的一个值包含在列字符串中,query应该给出行。
我这里有很多table。
前任:

Employee
| id | name |...| data_as_string |

在这里 data_as_string 可能包含json格式的部门名称。
我有一个子查询,它将根据条件返回一个或多个部门名称。基于子查询返回的结果,如果 employee table的 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。查询只是为了理解上下文

2ic8powd

2ic8powd1#

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

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

这对我有用。。

相关问题