[英]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.