在主页上,我有一个场所列表,您可以根据场所,名称和该场所提供的服务进行过滤。 我有SQL表,其中包含带有提供的服务的数字定义的机构列表:
id | name | location | services
1 | Establishment 1 | Florida | 2,5
2 | Establishment 2 | New York | 1,3,5
应该在主页上通过选中复选框来过滤服务。
我正在寻找SQL查询,该查询将根据所选服务过滤结果(例如,如果用户选择了服务5,它将显示上表中的两个结果,但是如果用户选择了服务5和1-仅ID为2的服务(如果选择5和4,则无结果)。
我发现FIND_IN_SET可能有效,但是如果用户选择多个服务,则似乎不起作用:
SELECT * FROM table1 t WHERE FIND_IN_SET(?, t.services) > 0
? -绑定输入,由POST AJAX发送,作为所选服务的连接,以逗号分隔-例如。服务=“ 1,3,4”。
答案 0 :(得分:0)
您可以尝试REGEXP
:
检查此:
SELECT * FROM testtbl t WHERE t.services REGEXP '(^|,)(1|3|4)(,|$)'
您需要以这种形式传递您的逗号分隔值=> 1|3|4