4

我有 2 个 sql 表 表名:代理 包含一个带有列 AgentID 的记录

表名为:空缺是显示数据 ans 的表。名为 vacancies 的表有 vacancies.Agents 包含与此类似的值

VacanyID    Company       position        CTC        Candidates        Agents
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FBVAC001  | HDFC      |  Branch Manager | 4.5  | FBCAN001,FBCAN002| Agent3,Agent4
FBVAC003  | TBNH      |  Branch Manager | 4.5  | FBCAN004,FBCAN005| Agent2,Agent4
FBVAC005  | MMNT      |  Branch Manager | 4.5  | FBCAN008,FBCAN006| Agent3
FBVAC008  | LCFC      |  Branch Manager | 4.5  | FBCAN009,FBCAN023| Agent3,Agent4
FBVAC008  | KOTC      |  Branch Manager | 4.5  | FBCAN009,FBCAN023| Agent5,Agent4

我想运行一个查询,该查询将只返回那些包含对应于表名代理的代理的值的记录。代理ID。这是迄今为止的查询,但它返回的只是那些在 vacancies.Agents 中没有多个值的记录

例如,如果要搜索的值是 Agent3,它应该返回 rows1,3 和 4,而不是只返回第 3 行。

SELECT
vacancies.VacancyID,
vacancies.Company,
vacancies.`Position`,
vacancies.CTC,
vacancies.Candidates,
vacancies.Agents
FROM vacancies
, agents
WHERE (FIND_IN_SET(vacancies.Agents,agents.AgentID) <> 0)

如何解决?

4

2 回答 2

3

我相信你有你的参数在FIND_IN_SET. 套装应该排在第二位

FIND_IN_SET(agents.AgentID, vacancies.Agents)

更多信息:http ://www.bitbybit.dk/carsten/blog/?p=162


此外,如果您只想查看特定代理,则还需要对其进行过滤,否则您将获得代理和匹配空缺的所有可能组合(因此重复行):

AND Agents.AgentID = 'Agent3'

演示:http ://www.sqlfiddle.com/#!2/b4dcb/3

于 2012-04-12T13:57:36.250 回答
0
SELECT
  vacancies.VacancyID,
  vacancies.Company,
  vacancies.`Position`,
  vacancies.CTC,
  vacancies.Candidates,
  vacancies.Agents
FROM vacancies,
  agents
WHERE (select
     agents.agentid,
     vacancies.agentid
   from agents
     left join vacancies
       on vacancies.agentid = agents.agentid)
and agents.agentid = 'Agent3'
于 2012-04-12T14:17:57.053 回答