复制PPT中FULL OUTER JOIN语句在MariaDB执行报错求助
问题分析与解决方案
报错原因
MariaDB(以及MySQL)不支持FULL OUTER JOIN语法,这是触发#1064语法错误的直接原因。虽然FULL OUTER JOIN属于标准SQL语法,但MariaDB并未实现该特性,因此执行时会提示语法错误。
教授语句的合理性
教授提供的语句本身在支持FULL OUTER JOIN的数据库(比如PostgreSQL、SQL Server、Oracle)中是完全正确的,并非语句本身有误,只是和你当前使用的MariaDB环境不兼容。
替代实现方案
要实现FULL OUTER JOIN的效果(返回student表和fee表中所有匹配及不匹配的行),可以通过LEFT JOIN + RIGHT JOIN结合UNION来模拟,具体SQL语句如下:
SELECT student.admission_no, student.first_name, student.last_name, fee.course, fee.amount_paid FROM student LEFT JOIN fee ON student.admission_no = fee.admission_no UNION SELECT student.admission_no, student.first_name, student.last_name, fee.course, fee.amount_paid FROM student RIGHT JOIN fee ON student.admission_no = fee.admission_no;
LEFT JOIN:返回student表的所有行,以及fee表中匹配的关联行;RIGHT JOIN:返回fee表的所有行,以及student表中匹配的关联行;UNION:自动去除两组结果中重复的匹配行,最终得到与FULL OUTER JOIN完全一致的结果集。
内容的提问来源于stack exchange,提问作者Marc Dwight Betonio
相关产品推荐
相关产品推荐

