2014-10-28 38 views
3

为什么我得到了下面的MySQL语法“1054未知列错误”: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时遇到此错误。使用这种精确的语法时,所有其他联接(Inner,Right,Left)都是成功的。 (我尝试了FULL OUTER JOIN变化)。

+0

你说你已经尝试过'FULL OUTER JOIN'变种。这是成功还是失败? – Eilidh 2014-10-28 17:19:02

+0

http://www.sitepoint.com/understanding-sql-joins-mysql-database/ – 2014-10-28 17:19:48

+0

FULL OUTER JOIN失败 – 2014-10-28 21:06:57

回答

3

现报道here,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; 

现在,因为它有FULLjos_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; 

,为了得到FULL JOIN需要MySQL,你下需要做这样的事情(如图所示here):

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 
+0

Clami219,谢谢你的详细回复。推荐的语法产生了相同的错误代码。我在这个问题上摸不着头脑。 – 2014-10-28 21:09:17

+0

我的错......现在它应该按预期工作! – clami219 2014-10-29 08:23:45