首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一表上具有多个条件的where子句

在同一表上具有多个条件的where子句
EN

Stack Overflow用户
提问于 2014-06-23 20:39:50
回答 2查看 618关注 0票数 1

我已经搜索了这个主题并找到了很多线索,但是我很抱歉我找不到解决方案/想法。

我有一张桌子如下

姓名-技术

Res1 = Java

Res1 x- MySQL

Res2 = Java

Res3 = Java

Res3 = PHP

Res3 x- MySQL

Res4 x- MySQL

Res4 = PHP

以此类推。

我想构建一个关系表,作为

名称@ similarResource

Res1 x- Res3

Res2 = Res1,Res3

Res3 = null

Res4 x- Res3

这是为了了解池中的类似资源。我尝试用游标创建存储过程,但无法继续。

我想要建立的步骤,

  1. 对于表中的每个资源,请查找他们熟悉的技术列表。
  2. 使用结果,在表中搜索资源,找出所有拥有相同技术的资源。 我尝试使用IN,结果导致了昂贵的查询。 请提出更好的办法。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-23 22:06:19

为了满足类似的res必须拥有所有匹配技术的要求,您可以使用内联视图比较匹配技术的计数

代码语言:javascript
复制
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 

演示

票数 2
EN

Stack Overflow用户

发布于 2014-06-23 20:50:05

将表连接到自己,并使用group_concat函数创建列表:

代码语言:javascript
复制
select x.name, group_concat(distinct y.name2) as similarResource
from (select name, count(*) c from mytable group by 1) x
join (select t.name, s.name name2, count(*) c
  from mytable t
  join mytable s on t.technology = s.technology
  and t.name != s.name
  group by 1, 2) y on x.name = y.name
where y.c >= x.c
group by 1

请参见现场演示,它使用示例数据提供了以下输出:

代码语言:javascript
复制
NAME    SIMILARRESOURCE
Res1    Res3
Res2    Res1,Res3
Res4    Res3

请注意,此查询的输出不包括Res3 | Res4,因为Res4没有"java“(您的示例数据丢失了一些行,或者我误解了这个问题)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24374925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档