我搜索了这个主题并找到了很多主题,但很抱歉我找不到解决方案/想法。
我有如下表格
名字 |技术
资源 1 | java
资源 1 | MySQL
研究2 | java
研究3 | java
研究3 | PHP
研究3 | MySQL
Res4 | MySQL
Res4 | PHP
等等..
我想建立一个关系表作为
名字 |相似资源
资源 1 | Res3
研究2 | Res1, Res3
研究3 |空
Res4 | Res3
了解池中可用的类似资源。我试图用游标创建存储过程,但无法继续。
我正在尝试构建的步骤,
1. 对于表中的每个资源,找到他们熟悉的技术列表
2. 使用结果,通过表格搜索找到所有具有相同技术的资源。
我尝试使用 IN 并导致昂贵的查询。
请提出一个更好的方法。
最佳答案
为了满足相似资源必须具有所有匹配技术的要求,您可以使用内嵌 View 比较匹配技术的计数
SELECT counts.name,
Group_concat(matchCount.name) simliarName
FROM (SELECT name,
Count(technology) techCount
FROM table1
GROUP BY name) counts
LEFT JOIN (SELECT t1.name t1_name,
t2.name,
Count(t2.technology) matchingTech
FROM table1 t1
JOIN table1 t2
ON t1.technology = t2.technology
AND t1.name != t2.name
GROUP BY t1.name,
t2.name) matchCount
ON counts.name = matchcount.t1_name
AND counts.techcount <= matchCount.matchingtech
GROUP BY counts.name
关于mysql - 同一张表上有多个条件的 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24374925/