gpt4 book ai didi

php - MySQL 使用连接进行搜索

转载 作者:行者123 更新时间:2023-11-29 07:04:51 25 4
gpt4 key购买 nike

我有 2 个 mysql 表 -

candskill - (cis, sid) - 其中 cid = 候选人 ID,sid = 技能 ID

candskill 中的数据(大小 - 257,000)-

c1, s1
c1, s2
c2, s3
c1, s4
c2, s5
...

技能 - (sid, name) - 其中 sid = 技能 ID,name = 技能名称

技能数据(大小 257,000)-

s1 - oracle
s2 - project management
s3 - oracle
s4 - testing
s5 - testing
...

现在,我想获取所有具有“oracle”和“testing”技能的候选人。或者我想要拥有“预言机”或“测试”技能的候选人。我希望拥有任何“与/或”技能组合,并希望寻找具备这些技能的候选人。

我如何实现这一目标?

这是我到目前为止所拥有的,但并不适用于所有情况。

select distinct(cs.cid), s.name from candskill cs 
inner join skills s on (cs.sid = s.sid and (s.name = 'oracle' or s.name = 'testing'))

此外,查询执行花费了太多时间。约120秒我们如何着手做到这一点。

我正在考虑编写一个查询,并通过 PHP 代码传递查询的技能部分,连接字符串,并在每次用户搜索特定技能的候选人时生成新的查询。

最佳答案

您可以对 s.name 的计数使用having子句

  select cs.cid
from candskill cs
inner join skills s on (cs.sid = s.sid and s.name in ( 'oracle' , 'testing'))
group by cs.cid
having count(distinct(s.name)) = 2

1 或 2 个

  select cs.cid
from candskill cs
inner join skills s on (cs.sid = s.sid and s.name in ( 'oracle' , 'testing'))
group by cs.cid
having count(distinct(s.name)) >= 1

关于php - MySQL 使用连接进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42145322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com