mysql小问题,求大佬解答

select *
from (select id, sum(degree)
from employee_skill
group by id
)as t1 full outer join
(select id, sum(score)
from project_employee
group by id
)as t2
where t1.id = t2.id

这段 sql 语句 不知道为什么 不能使用 全外连接,如果是内连接的话,语句是没有问题的
希望大佬能解答一下

8个回答

mysql 是不支持全外连接的,可以使用union all进行替换

用JOIN 一样的效果,换个方式把

mysql不支持全外连接,试着用以下,left join + right join union 替换 full outer join
SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

应该是数据库本身的规定

select *
from (select id, sum(degree)
from employee_skill 
group by id
)as t1
UNION ALL
(select id, sum(score)
from project_employee
group by id
)as t2
where t1.id = t2.id
it_zhangwei
路漫漫兮其修远兮 你可以给union ALL 换成left join 然后在给where 换成ON 这样应该是没有语法错误的
大约 2 年之前 回复

你这个mysql不支持全外连接,你可以用这个,left join + right join union 来替换 full outer join

outer join则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行。它还返回任何在第二个输入中没有匹配行的第一个输入中的行。
通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。

select *
from (select id, sum(degree)
from employee_skill
group by id
)as t1 full join
(select id, sum(score)
from project_employee
group by id
)as t2
where t1.id = t2.id

试试关键词用法

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问