Mysql 如何使用左联接优化此sql查询?
我对以下SQL查询有问题。如您所见,我连接了一些表(候选者\基础、候选者\郎、候选者的省\大学、候选者的学位\大学),然后将结果连接到另一个表“专业\大学经验\大学基础”,但是,查询返回了几个实例(例如:它返回两个id_candidate_basic=55的实例,或者返回三个id_candidate_basic=59的实例) 我的问题是,我只希望查询每个id_candidate_basic返回1个实例。也就是说,属性为“main_job”且值为1的实例,如果不可能,则返回null 我试图将和professional\u experience\u basic.main\u job=1放在WHERE子句中,但它删除了main\u job=null的实例 我觉得我已经接近最后的结果了,但我在最后的努力中花了很多时间。有人知道解决方法吗? 提前谢谢 查询:Mysql 如何使用左联接优化此sql查询?,mysql,join,left-join,Mysql,Join,Left Join,我对以下SQL查询有问题。如您所见,我连接了一些表(候选者\基础、候选者\郎、候选者的省\大学、候选者的学位\大学),然后将结果连接到另一个表“专业\大学经验\大学基础”,但是,查询返回了几个实例(例如:它返回两个id_candidate_basic=55的实例,或者返回三个id_candidate_basic=59的实例) 我的问题是,我只希望查询每个id_candidate_basic返回1个实例。也就是说,属性为“main_job”且值为1的实例,如果不可能,则返回null 我试图将和pr
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
目前的结果是:
我想要的结果是:
将列列表中的
professional\u experience\u basic.main\u job
更改为max(professional\u experience\u basic.main\u job)
,然后:
GROUP BY candidate_basic.id_candidate_basic, candidate_lang.town,
province.name, degree_of_candidate.id_degree_of_candidate
首先分组你的结果
... 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
我想你最想要的是这份工作,但我不知道。
将选择更改为:
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)
看起来你想让max出现在这里,但我不知道是的,他在这里需要max或其他什么。但是在进行这种分组时,通常你并不真正关心最后一列中的数字。