我遇到以下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的实例,如果不可能,则只为null。
我尝试将 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
目前的结果:
我想要的结果:
答案 0 :(得分: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
答案 1 :(得分:-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)
好像你想要最大值,但我不知道