我正在尝试搜索过去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)
记录正在获取
但是当两列具有相同的整个逗号分隔值集时,它是匹配的,我还需要获取所有那些即使两列中的单个值都匹配(例如2,6或2,154)或整个逗号分隔的字符串(如(2, 4,5,32)和(106,154,3)匹配。
这不是我自己的数据库,所以我无法更改它。请帮助我。谢谢。
答案 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)
)