记笔记,记笔记
我记得有人问过我这个问题,当时回答得不太好,我补上这个问题
首先连接有:内连接,外连接(左外,右外),全连接(交集),交叉连接(笛卡尔积)
先略两个表
首先左连接:SELECT * FROM test1 a LEFT JOIN test2 b ON a.id = b.id;
(尴尬,join打错了,毕竟英语没有6级(#^_^!))
解释下就是以左边表id(案例里面是test1)为基础和右表id对比,左表有的右表也有就也出来,右表没有的就NULL咯,右连接和左连接相反
右连接:SELECT * FORM test1 a RIGHT JOIN test2 b ON a.id = b.id;
enh,以右边表id为基础和左边表id对比,右边表有的左边表也有就显示出来,左边表没有的就NULL
内连接:SELECT * FROM test1 a INNER JOIN test2 b ON a.id = b.id;
解释的话就是:两个表的交集,就是左表和右表都有的才显示出来
全连接:(SELECT * FROM test1) UNION (SELECT * FROM test2);
UNION是两个交集,相当于两张表数据和在一起(不重复),下面是会重复的UNION ALL:(SELECT * FROM test1) UNION ALL (SELECT * FROM test2);
交叉连接:SELECT * FROM test1 CROSS JOIN test2;
OVER