一、问题描述
当我从用户表中查照id小于200的用户并把id使用逗号拼接起来可以使用group_concat函数
select group_concat(id) from pg_users where id < 200
查询结果如下:
我们有些场景可能也会筛选处满足条件的id并与in语句进行搭配
select id from pg_users where id in (select group_concat(id) from pg_users where id < 200)
查询结果如下(可以看到结果中只有47生效了,因此这种方式显然不合理):
二、解决方式
使用函数find_in_set()替代in
select id from pg_users where find_in_set(id, (select group_concat(id) from pg_users where id < 200))
查询结果如下(可以看到所有结果都出来了,只是顺序上会有些问题,但是不影响逻辑)