mysql 从哪个版本开始支持full join
答案:2 悬赏:0 手机版
解决时间 2021-04-23 02:52
- 提问者网友:美人性情
- 2021-04-22 14:46
mysql 从哪个版本开始支持full join
最佳答案
- 五星知识达人网友:轮獄道
- 2021-04-22 16:19
Oracle 、DB2、SQL Server、PostgreSQL 支持 Full JOIN 但是 MySQL 是不支持的。 可以通过 LEFT JOIN + UNIOn + RIGHT JOIN 的方式 来实现。
全部回答
- 1楼网友:有你哪都是故乡
- 2021-04-22 17:25
oracle 、db2、sql server、postgresql 支持 full join
但是 mysql 是不支持的。
可以通过
left join + union + right join 的方式 来实现。
下面是 测试表与测试数据
-- 学生表
create table student (
sno int,
sname varchar(10),
icno int
);
-- 食堂ic卡表
create table ic (
icno int,
icname varchar(10),
icmoney int
);
insert into student values(1, '张三', 1 );
insert into student values(2, '李四', 2 );
insert into student values(3, '王五', null);
insert into ic values(1, '张三', 500 );
insert into ic values(2, '李四', 250 );
insert into ic values(3, '赵老师', 600);
下面是 sql server 使用 full join 的结果
select
student.sno,
student.sname,
ic.icname,
ic.icmoney
from
student
full join ic
on (student.icno = ic.icno);
go
sno sname icname icmoney
----------- ---------- ---------- -----------
1 张三 张三 500
2 李四 李四 250
3 王五 null null
null null 赵老师 600
(4 行受影响)
下面是 mysql 不支持 的输出结果:
mysql> select
-> student.sno,
-> student.sname,
-> ic.icname,
-> ic.icmoney
-> from
-> student
-> full join ic
-> on (student.icno = ic.icno);
error 1054 (42s22): unknown column 'student.sno' in 'field list'
下面是 mysql 的 left join + union + right join 的方式。
mysql> select
-> student.sno,
-> student.sname,
-> ic.icname,
-> ic.icmoney
-> from
-> student
-> left join ic
-> on (student.icno = ic.icno)
-> union
-> select
-> student.sno,
-> student.sname,
-> ic.icname,
-> ic.icmoney
-> from
-> student
-> right join ic
-> on (student.icno = ic.icno);
+------+-------+--------+---------+
| sno | sname | icname | icmoney |
+------+-------+--------+---------+
| 1 | 张三 | 张三 | 500 |
| 2 | 李四 | 李四 | 250 |
| 3 | 王五 | null | null |
| null | null | 赵老师 | 600 |
+------+-------+--------+---------+
4 rows in set (0.01 sec)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯