为什么我从以下mysql语法中得到"1054未知列错误":
SELECT attorney_first_name, attorney_last_name, att_school, att_degree_obtained
FROM jos_legalally_attorneys
FULL JOIN jos_legalally_attorney_education
ON jos_legalally_attorneys.user_id=jos_legalally_attorney_education.user_id;
它导致错误:
#1054 - Unknown column 'jos_legalally_attorneys.user_id' in 'on clause'
只有在尝试FULL JOIN
时才会出现此错误。使用此确切语法时,所有其他联接(内部联接、右侧联接、左侧联接)都是成功的。(我尝试过FULL OUTER JOIN
变体)。
此处报告,MySQL不支持FULL JOIN
,因此您的查询解释如下:
SELECT attorney_first_name, attorney_last_name, att_school, att_degree_obtained
FROM jos_legalally_attorneys as FULL #FULL is taken as table alias!!
INNER JOIN jos_legalally_attorney_education
ON jos_legalally_attorneys.user_id=jos_legalally_attorney_education.user_id;
现在,由于它有FULL
作为jos_legalally_attorneys
的表别名,所以它不能正常工作。
如果您尝试以下查询,它应该不会给出错误(即使它不能满足您的要求):
SELECT attorney_first_name, attorney_last_name, att_school, att_degree_obtained
FROM jos_legalally_attorneys
FULL JOIN jos_legalally_attorney_education
ON FULL.user_id=jos_legalally_attorney_education.user_id;
现在,为了在MySQL下获得所需的FULL JOIN
,您需要做如下操作(如图所示):
SELECT attorney_first_name, attorney_last_name, att_school, att_degree_obtained
FROM jos_legalally_attorneys
LEFT JOIN jos_legalally_attorney_education
ON jos_legalally_attorneys.user_id=jos_legalally_attorney_education.user_id
UNION ALL
SELECT attorney_first_name, attorney_last_name, att_school, att_degree_obtained
FROM jos_legalally_attorneys
RIGHT JOIN jos_legalally_attorney_education
ON jos_legalally_attorneys.user_id=jos_legalally_attorney_education.user_id