MySQL高级查询报错1064:SQL语法错误求助
修正你的MySQL SQL语法错误
我帮你拆解下这段SQL里的几个关键语法问题,然后给出修正后的可用代码:
核心错误点
- 列分隔符误用:SELECT子句里你用了
WITH来分隔列,这是完全错误的写法,MySQL里列之间必须用逗号,分隔。 - 表名格式错误:MySQL不支持用
[ORDERS]这种方括号包裹表名(这是SQL Server的写法),直接写ORDERS即可,若表名是关键字才需要用反引号`ORDERS`包裹。 - 表别名拼写错误:你把订单表的别名写成了数字
0(零),但后续引用的是字母O,两处的0都要改成字母O。 - JOIN条件运算符错误:RIGHT JOIN里的
C.CustomerID-O.CustomerID用了减号-,应该是等于号=来匹配关联字段。
修正后的SQL代码
SELECT C.CustomerID, C.CustomerName, O.OrderDate, O.TotalOrderAmount FROM CUSTOMERS C LEFT JOIN ORDERS O ON C.CustomerID = O.CustomerID UNION SELECT C.CustomerID, C.CustomerName, O.OrderDate, O.TotalOrderAmount FROM CUSTOMERS C RIGHT JOIN ORDERS O ON C.CustomerID = O.CustomerID;
补充说明:MySQL本身不支持FULL OUTER JOIN,所以用LEFT JOIN + UNION + RIGHT JOIN的方式来实现全外连接是合理的;如果需要保留重复行,可以把UNION换成UNION ALL。
内容的提问来源于stack exchange,提问作者Ashley Carpenter
相关产品推荐
相关产品推荐

