多字段查询排序问题想做一个搜索,例如:输入关键字A B C三个关键字中间以空格分开。
我用 select * from table where cn like'%A%' or cn like'%B%' or cn like'%C%' 这种方法查询,
但有个问题。就是如何像百度那样把更符合条件的排在前面呢?例如符合ABC的排在最前,符合AB或BC、AC的排在随后呢?还有一种情况,A,B,C分别为各个字段,同样的需要按照满足3个字段的条件相关度来排序,应该怎么写sql语句。希望大家帮帮忙。
我用 select * from table where cn like'%A%' or cn like'%B%' or cn like'%C%' 这种方法查询,
但有个问题。就是如何像百度那样把更符合条件的排在前面呢?例如符合ABC的排在最前,符合AB或BC、AC的排在随后呢?还有一种情况,A,B,C分别为各个字段,同样的需要按照满足3个字段的条件相关度来排序,应该怎么写sql语句。希望大家帮帮忙。
order by (cn like'%A%') + (cn like'%B%') + (cn like'%C%' ) desc
我修改成这样,就可以按照需要的关键字排序了。
select * from table where cn like'%A%' or cn like'%B%' or cn like'%C%'
order by (cn like'%A%') + (cn like'%B%') + (cn like'%C%' ) desc,
(cn like'%A%') + (cn like'%B%') desc,
(cn like'%B%') + (cn like'%C%' ) desc,
(cn like'%A%') + (cn like'%C%' ) desc,
(cn like'%A%') desc,
(cn like'%B%') desc,
(cn like'%C%' ) desc1.A,B,C均有。
2.只有两个时,A+B>B+C>A+C;
3.只有一个时,A>B>C.但不知道还有好点的方法没?