最近有个需求,就是要根据搜索框里面的关键字,找到符合条件的数据。
如果是单个条件的话,其实就是一个普通的select语句。
但是需求是这个关键字,要在id,desc,step等多个字段模糊查找。
然后最直观的一个思路肯定就是:
select * from t_bug where `id` like %key% or `desc` like %key% or `step` like %key%
对一条记录,要对id、desc、step三项都判断一下符不符合key。
缺点:需求只有三个记录,如果是多个记录的话,那就效率会很慢,而且修改这个语句也很复杂。
一个更好的方法是,把需要模糊查询的各个字段,用concat拼接起来,成为一整个字符串,再用like来匹配。
SELECT * FROM t_bug WHERE CONCAT(`desc`,`step_to_string`,`bug_id`) LIKE %key%
我在项目中就是这么做的,导师也认为没什么大问题:
各位有什么更好的方法,也可以交流一下哈。