mysql 按相似度排序_mysql按相似度来排序

数据库tag字段内容格式:a,b,c,d ...

假设有这几条记录

1:刘世允

2:郑胜浩

3:申东烨

4: 申东烨,郑胜浩,刘世允,安英美

5: 郑胜浩,刘世允,安英美

6: 申东烨,郑胜浩

7:刘世允,安英美

给出的查询tag

$tag = '申东烨,郑胜浩,刘世允,安英美,李尚勋';

按照相同词的个数排序

查询的结果

1: 申东烨,郑胜浩,刘世允,安英美

2: 郑胜浩,刘世允,安英美

3: 申东烨,郑胜浩

4:刘世允,安英美

5:刘世允

6:郑胜浩

7:申东烨

回复内容:

数据库tag字段内容格式:a,b,c,d ...

假设有这几条记录

1:刘世允

2:郑胜浩

3:申东烨

4: 申东烨,郑胜浩,刘世允,安英美

5: 郑胜浩,刘世允,安英美

6: 申东烨,郑胜浩

7:刘世允,安英美

给出的查询tag

$tag = '申东烨,郑胜浩,刘世允,安英美,李尚勋';

按照相同词的个数排序

查询的结果

1: 申东烨,郑胜浩,刘世允,安英美

2: 郑胜浩,刘世允,安英美

3: 申东烨,郑胜浩

4:刘世允,安英美

5:刘世允

6:郑胜浩

7:申东烨

----------------建表

mysql> create table testsort (tag varchar(100) charset "GBK");

Query OK, 0 rows affected (0.51 sec)

"sql

mysql> describe testsort

-> ;

+-------+--------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+--------------+------+-----+---------+-------+

| tag | varchar(100) | YES | | NULL | |

+-------+--------------+------+-----+---------+-------+

1 row in set (0.07 sec)

----------------插入数据

"sql

mysql> insert into testsort(id,tag) values(1,"刘世允"),

-> (2,"郑胜浩"),

-> (3,"申东烨"),

-> (4,"申东烨,郑胜浩,刘世允,安英美"),

-> (5,"郑胜浩,刘世允,安英美"),

-> (6,"申东烨,郑胜浩"),

-> (7,"刘世允,安英美");

Query OK, 7 rows affected (0.07 sec)

Records: 7 Duplicates: 0 Warnings: 0

----------------方法

mysql> select id,

-> tag,

-> char_length(tag)-char_length(replace(tag,',',''))+1 as cnt

-> from testsort;

+------+-----------------------------------------+------+

| id | tag | cnt |

+------+-----------------------------------------+------+

| 1 | 刘世允 | 1 |

| 2 | 郑胜浩 | 1 |

| 3 | 申东烨 | 1 |

| 4 | 申东烨,郑胜浩,刘世允,安英美 | 4 |

| 5 | 郑胜浩,刘世允,安英美 | 3 |

| 6 | 申东烨,郑胜浩 | 2 |

| 7 | 刘世允,安英美 | 2 |

+------+-----------------------------------------+------+

7 rows in set (0.00 sec)

----------------另外注意

Responses below will get you there. However, don't forget to use CHAR_LENGTH() instead of LENGTH() if you're using multibyte characters. – inhan Sep 10 '12 at 3:03

http://stackoverflow.com/questions/12344795/count-the-number-of-occurences-of-a-string-in-a-varchar-field

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值