比如表中有一个字段为title
内容假如如下:
--------------------------------
| id | title
--------------------------------
| 1 | 我是中国人,在中国的江苏省
--------------------------------
| 2 | 我是中国人,在上海市
--------------------------------
| 3 | 我是中国人,在北京
--------------------------------
查询的时候,可能按多个关键字:如"中国","北京"
需要将查询出来的结果,关键字和title中匹配度高的排到前面,不知道应该如何写这个查询呢?
内容假如如下:
--------------------------------
| id | title
--------------------------------
| 1 | 我是中国人,在中国的江苏省
--------------------------------
| 2 | 我是中国人,在上海市
--------------------------------
| 3 | 我是中国人,在北京
--------------------------------
查询的时候,可能按多个关键字:如"中国","北京"
需要将查询出来的结果,关键字和title中匹配度高的排到前面,不知道应该如何写这个查询呢?
解决方案 »
- 【求助】表A记录1万,表B记录10万,如果COUNT 更快?每次只能100个也还是很慢
- mysql update 语句:Lock wait timeout exceeded; try restarting transaction
- 请问php如何调用oracle数据
- MySQL怎么让列默认值为系统当前时间
- 如何用not in 代替not exists?一题作业?
- 面试题目:怎么去除表中的重复记录?
- 怎么把mysql的character set 修改为gb2312
- 关于两个表的查询
- PHP+MYSQL高手请进!!!!!!急,救命呀!!!!!
- 大神救助
- 50分求解个如何查询树的SQL
- 在线求助触发器问题
如果你非要这样的话,可以试试match against全文搜索.不过据说中文的不行.
用REPLACE函数将字段要查找内容替换为空,用LEN(原字段长度)-LEN(替换后字段长度)
即可得到有多少内容是匹配的
下一个条件的,然后按照相同记录的个数进行排序。select id,title,count(*) as con from (
select id,title from table where title ...
union all
select id, title form table where ....
union all
.....
) as temp group by id ,title order by con
类似上面的写法。
将title转为拼音,表中添加一个title_py字段;
然后将查询内容转为拼音,再我是中国人,再match against;