无法在同一查询中搜索单个数字和逗号分隔的字符串

时间:2019-05-26 13:10:42

标签: mysql sql database

我正在尝试搜索过去8小时内的特定情况,但无法对其进行梳理。

我需要从单个表中获取记录,在这里我需要将逗号分隔的字符串与两列进行匹配。

-两列均包含单个值(例如1)或逗号分隔的值(例如1,2,3)

我需要获取记录,其中对于单值或逗号分隔值,两列都至少具有一个AND条件匹配。

这是我的查询

SELECT specialities, ids_origin, id, latitude, longitude 
FROM `ep_restaurant` 
where `specialities` in (2,4,5,32) and `ids_origin` in (106,154,3)

记录正在获取

http://prntscr.com/ntiao7

但是当两列具有相同的整个逗号分隔值集时,它是匹配的,我还需要获取所有那些即使两列中的单个值都匹配(例如2,6或2,154)或整个逗号分隔的字符串(如(2, 4,5,32)和(106,154,3)匹配。

这不是我自己的数据库,所以我无法更改它。请帮助我。谢谢。

1 个答案:

答案 0 :(得分:0)

MySQL对于此类必须避免的用例具有有用的功能。

例如,如果您有specialities表:

SELECT r.id, latitude, longitude, r.specialities
  FROM ep_restaurant r
  WHERE exists( SELECT 1 
                  FROM specialities s 
                  WHERE find_in_set(s.id, r.specialities)
                    AND s.id in(2,6)
              )
     OR exists( SELECT 1 
                  FROM <Origins Table> o 
                  WHERE find_in_set(o.<Column Id>, r.ids_origin)
                    AND o.<Column Id> in(106,154)
              )