[英]SQL & FIND_IN_SET for filtering
在主页上,我有一个场所列表,您可以根据场所,名称和该场所提供的服务进行过滤。 我有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”。
您可以尝试REGEXP
:
检查一下:
SELECT * FROM testtbl t WHERE t.services REGEXP '(^|,)(1|3|4)(,|$)'
您需要以这种形式传递逗号分隔的值=> 1|3|4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.