如何在mysql中应用like查询?

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

我在表演 LIKE 查询 GROUP_CONCAT 这给了我0个结果,这是错误的原因 area_seq 对于那些重叠区域存在。
下面是我的问题

select ar.area_seq
from area ar
where ar.name LIKE (select GROUP_CONCAT(overlapped_areas)
                    from overlapping_areas oa, area ar
                    where oa.area_seq = ar.area_seq)
GROUP_CONCAT query results : adair county, orange county, baldwin county etc....

然而, GROUP_CONCAT(overlapped_areas) 以逗号(,)分隔重叠区域。但,同样的,我传递给面积表,然后它应该理想地返回那里 area_seq 但它只是不返回结果。

dw1jzc5e

dw1jzc5e1#

你可以用 FIND_IN_SET 在这里:

SELECT area_seq
FROM area
WHERE FIND_IN_SET(name, (SELECT GROUP_CONCAT(overlapped_areas)
                         FROM overlapping_areas oa, area ar
                         WHERE oa.area_seq = ar.area_seq)) > 0;
``` `FIND_IN_SET` 在包含多个术语的csv字符串中搜索字符串。例如:

FIND_IN_SET('Orange County', 'adair county,orange county,baldwin county')

会回来的 `2` ,因为 `orange county` 发生在csv位置列表的第二个位置。 `FIND_IN_SET` 没有匹配时返回0。
我觉得下面的查询应该给出相同的结果,减去不必要的 `GROUP_CONCAT` 接着是一个电话 `FIND_IN_SET` :

SELECT area_seq
FROM area
WHERE name IN
(
SELECT overlapped_areas
FROM overlapping_areas oa
INNER JOIN area ar
ON oa.area_seq = ar.area_seq
);

相关问题