我的数据库中有 3 个表,分别为 Jobs、JobApplications、Candidates。
他们在这里。
工作
JobId | JobTitle --------------------------- 2115 | Software Engineer 2154 | Accountant 4562 | Sales Manager 4569 | Civil Engineer
工作申请
JobApplicationId | CandidateId | JobId --------------------------- 8845 | 1120 | 2154 8912 | 1120 | 4569 9120 | 1555 | 2115 9450 | 1899 | 2115 9458 | 1991 | 4569 9488 | 1889 | 4569
候选人
CandidateId | Email ---------------------------- 1120 | [email protected] 1555 | [email protected] 1889 | [email protected] 1991 | [email protected]
我想要的是:一张包含候选人和基于他们之前的申请的 jobId 的表格。
例如:如果有人申请了“软件工程师”职位,我需要将除所申请的职位之外的所有其他标题为“软件工程师”的职位与候选人 ID 一起添加到表中。
有什么办法可以使用 SQL 来实现这一点吗?
有人可以帮我吗?
预期输出如下
CandidateId | Suggest_jobId ------------------------------ 1120 | 3565 1120 | 8956 1120 | 4565 1889 | 8965 1889 | 4568
因此单个候选人可能有多个工作建议。
最佳答案
我们可以利用一个简单的CTE
来完成这项工作
WITH cte AS
(
SELECT j.JobId,
j.JobTitle,
ja.CandidateId
FROM JobApplications ja
JOIN Jobs j ON j.JobId=ja.JobId
)
SELECT j.JobTitle,
c.CandidateId
FROM Jobs j
JOIN cte c ON j.JobTitle like CONCAT('%',c.JobTitle,'%') AND c.JobId!=j.JobId
关于sql - 基于 SQL Server 中另一个查询的 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53333693/