有技能領域(串)一樣,字符串搜索
1)php,mysql
2)java
3)java,c
,我需要選擇搭配技巧場條件列我的MySQL領域。條件可能會像,
skills="php" // o/p => 1st column
or
skills = "mysql,c" // o/p => 1st and 3rd column
我如何寫查詢。這裏即時通訊使用PHP。
有技能領域(串)一樣,字符串搜索
1)php,mysql
2)java
3)java,c
,我需要選擇搭配技巧場條件列我的MySQL領域。條件可能會像,
skills="php" // o/p => 1st column
or
skills = "mysql,c" // o/p => 1st and 3rd column
我如何寫查詢。這裏即時通訊使用PHP。
一種方式做到這一點
SELECT *
FROM table1
WHERE skills LIKE '%mysql%'
OR skills LIKE '%c%'
這將是容易得多,如果你歸你的數據
我的搜索條件可能有'n'個內容 – KarSho 2013-05-06 05:53:37
@KarSho你是什麼意思'...有'n'內容'? – peterm 2013-05-06 06:08:37
您可以根據需要添加任意數量的由OR連接的子句。 – 0xCAFEBABE 2013-05-06 06:16:31
使用像這樣的一個過程:
Split comma separated values from one column to 2 rows in the results. MySQL
處理行的CSV技術領域分割成一個臨時表中的每個技能
然後做同樣的事情與你的搜索參數(我假設也通過了CSV字符串)
然後簡單地套用一個JOIN
兩個結果,並得到DISTICT
ID。
有很多解決方案可以在MySQL中分割逗號分隔的字符串(儘管這不是特別擅長此任務)......如果您無法正確地規範化數據,那麼您無法很好地抱怨低效的查詢例程。
KarSho,你應用第一個常規表單並在其他表中獲得技能字段的任何變更? – medina 2013-05-06 05:49:17
@medina雅,感謝您的!dea。但是,我完全設計了DB。現在我不能改變。 – KarSho 2013-05-06 05:51:13