0

我对以下 SQL 查询有疑问。如您所见,我加入了一些表(candidate_basic,candidate_lang,province_of_candidate,province,degree_of_candidate),然后我将结果与另一个表“professional_experience_basic”加入,但是,查询返回几个实例(例如:它返回两个实例 id_candidate_basic= 55,或者它返回 id_candidate_basic=59 的三个实例)。

我的问题是我只希望查询为每个 id_candidate_basic 返回 1 个实例。也就是说,具有属性“main_job”的实例的值为 1,如果这不可能,则为空。

我试图将AND professional_experience_basic.main_job=1放在 WHERE 子句中,但是,它删除了带有main_job=null的实例。

我觉得我已经接近最终结果,但我在最后的努力中花了很多时间。有谁知道解决方案?提前致谢。

查询:

SELECT DISTINCT
    candidate_basic.id_candidate_basic,
    candidate_lang.town,
    province.name,
    degree_of_candidate.id_degree_of_candidate,professional_experience_basic.main_job

FROM (((((candidate_basic
    INNER JOIN candidate_lang 
    ON candidate_lang.id_candidate_basic=candidate_basic.id_candidate_basic)
    INNER JOIN province_of_candidate
    ON province_of_candidate.id_candidate_basic=candidate_basic.id_candidate_basic)
    INNER JOIN province
    ON province.id_province=province_of_candidate.id_province)
    INNER JOIN degree_of_candidate
    ON degree_of_candidate.id_candidate_basic=candidate_basic.id_candidate_basic)
    LEFT JOIN professional_experience_basic
    ON professional_experience_basic.candidate_id=candidate_basic.id_candidate_basic)

WHERE candidate_basic.candidate_state=2
  AND degree_of_candidate.is_main_degree
  AND candidate_lang.id_website_lang=1

当前结果:

在此处输入图像描述

我想要的结果:

在此处输入图像描述

4

2 回答 2

1

在列列表中更改professional_experience_basic.main_job为,然后:max(professional_experience_basic.main_job)

GROUP BY candidate_basic.id_candidate_basic, candidate_lang.town,
          province.name, degree_of_candidate.id_degree_of_candidate
于 2013-04-03T14:56:51.790 回答
-1

首先对您的结果进行分组

... AND candidate_lang.id_website_lang=1
GROUP BY 
    candidate_basic.id_candidate_basic,
    candidate_lang.town,
    province.name,
    degree_of_candidate.id_degree_of_candidate

而且我认为您想要 main_job 的最大值,但我不知道。将选择更改为:

SELECT DISTINCT
    candidate_basic.id_candidate_basic,
    candidate_lang.town,
    province.name,
    degree_of_candidate.id_degree_of_candidate,MAX(professional_experience_basic.main_job)

好像你想要这里的最大值,但我不知道

于 2013-04-03T14:57:06.627 回答