关于full join 报错的 的问题

我的未来不是梦 2012-01-07 10:02:37
在mysql 中写了个小sql 文,但是执行总出错:
创建表的语法是:

CREATE TABLE `saledm` (
`saleqty` decimal(10,0) DEFAULT NULL,
`sqleamont` decimal(10,0) DEFAULT NULL,
`month` int(11) NOT NULL,
`culi` decimal(10,0) DEFAULT NULL,
`year` varchar(4) NOT NULL,
PRIMARY KEY (`month`,`year`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

插入两条数据:
INSERT INTO `saledm` VALUES ('123', '2599', '2', '232', '2010');
INSERT INTO `saledm` VALUES ('12', '1231', '3', '231', '2010');

执行语句是:
SELECT
*
FROM
saledm t1
FULL JOIN (
SELECT
*
FROM
saledm
WHERE
`month` = '3'
) t2 ON t1. YEAR = t2. YEAR

where t1.`month` = '2'
就报错:
错误信息如下:
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULL JOIN (
SELECT
*
FROM
saledm
WHERE
`month` = '3'
) t2 ON t1.' at line 5

但是改成left join 就不报错

请高手和大侠们帮帮忙
...全文
436 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2012-01-08
  • 打赏
  • 举报
回复
MySQL 5.1以前不支持 FULL JOIN,只有左外连接和右外连接
美到心痛 2012-01-08
  • 打赏
  • 举报
回复
MySQL 5.1以前不支持 FULL JOIN
,你用union搞定吧

SELECT * FROM saledm t1 left JOIN (SELECT* FROM saledm WHERE`month` = '3') t2 ON t1. YEAR = t2.YEAR
where t1.`month` = '2'
union
SELECT * FROM saledm t1 right JOIN (SELECT* FROM saledm WHERE`month` = '3') t2 ON t1. YEAR = t2.YEAR
where t1.`month` = '2'
中国风 2012-01-07
  • 打赏
  • 举报
回复
SELECT
*
FROM
saledm t1
FULL JOIN (
SELECT
*
FROM
saledm
WHERE
[month] = '3'
) t2 ON t1. YEAR = t2. YEAR

where t1.[month] = '2'

‘改为[]
  • 打赏
  • 举报
回复
不好用啊。这么改还是不行啊

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧