我的MySQL字段有技能字段(字符串),如
1)php,mysql
2)java
3)java,c
我需要选择具有技能字段条件的列。条件可能是,
skills="php" // o/p => 1st column
or
skills = "mysql,c" // o/p => 1st and 3rd column
我如何编写查询。?我在这里使用PHP。
答案 0 :(得分:3)
一种方法
SELECT *
FROM table1
WHERE skills LIKE '%mysql%'
OR skills LIKE '%c%'
<强> SQLFiddle 强>
如果您将数据标准化
会更容易答案 1 :(得分:1)
使用类似这样的程序:
Split comma separated values from one column to 2 rows in the results. MySQL
将csv技能字段拆分为每个技能行的临时表
然后用你的搜索参数做同样的事情(我假设也是传入的csv字符串)
然后只需在{2}结果上应用JOIN
即可获得DISTICT
ID。
有许多解决方案可以在MySQL中拆分逗号分隔的字符串(尽管它在这项任务中并不是特别擅长)...如果你无法正确地规范化数据,那么你就不能很好地抱怨低效的查询例程。