表A
--ID 自增ID
--KeyName 关键名
--查找优先级
ID KeyName Priority
1 %ab%cd% 0
2 %ab% 1
3 %cd% 2
表B
--ID 自增ID
--Name 名
ID Name
1 abcd
2 cdab
3 *jsjabcd
4 33ab44cd
5 dfdaldj能根据A表的匹配关键词查B表,要求按关键名优先级排结果为,匹配度高的排前。
如abcd完全匹配排最上,排完表B如下ID Name
1 abcd
3 *jsjabcd
4 33ab44cd
2 cdab
--ID 自增ID
--KeyName 关键名
--查找优先级
ID KeyName Priority
1 %ab%cd% 0
2 %ab% 1
3 %cd% 2
表B
--ID 自增ID
--Name 名
ID Name
1 abcd
2 cdab
3 *jsjabcd
4 33ab44cd
5 dfdaldj能根据A表的匹配关键词查B表,要求按关键名优先级排结果为,匹配度高的排前。
如abcd完全匹配排最上,排完表B如下ID Name
1 abcd
3 *jsjabcd
4 33ab44cd
2 cdab
解决方案 »
- 关于增加用户的一点疑问
- 怎么在有自增变量的表中插入数据?
- mysql root密码丢失,有一个用户,只有其中一个库的权限。。。。
- 关于EMS PostgreSQL Manager
- 怎么解决要求返回整数在1970年前数据库中的data和datatime类型值?
- 为了彻底完全干净利索的解决数据库数据冗余,干脆一个“ID+property”成一个表,绝对没冗余。
- 我要通过 id1+id 2 在表2中拿数据 而且通过在id1在表1中拿数据 怎么写sql
- mysql使用mysqldump备份报错
- 索引设计
- mysql如何实现两个表的数据差异查询
- 写一个loop存储过程如何写
- 如何用一个命令删除Mysql里面的多个数据表
+------+---------+----------+
| ID | KeyName | Priority |
+------+---------+----------+
| 1 | %ab%cd% | 0 |
| 2 | %ab% | 1 |
| 3 | %cd% | 2 |
+------+---------+----------+
3 rows in set (0.08 sec)mysql> select * from b;
+------+----------+
| ID | Name |
+------+----------+
| 1 | abcd |
| 2 | cdab |
| 3 | *jsjabcd |
| 4 | 33ab44cd |
| 5 | dfdaldj |
+------+----------+
5 rows in set (0.00 sec)mysql> select b.ID,b.Name
-> from a , b
-> where b.Name like a.KeyName
-> group by b.ID,b.Name
-> order by min(Priority);
+------+----------+
| ID | Name |
+------+----------+
| 1 | abcd |
| 3 | *jsjabcd |
| 4 | 33ab44cd |
| 2 | cdab |
+------+----------+
4 rows in set (0.08 sec)mysql>
GROUP BY b.ID,b.Name
ORDER BY MIN(a.Priority)