代码拉取完成,页面将自动刷新
##sql标准中的join类型
##inner join
SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
SELECT a.user_name,a.over,b.over FROM user1 a JOIN user2 b ON a.user_name = b.user_name;
| user_name | over | over | |--|--| | 孙悟空 | 斗战圣佛 | 成佛 |
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name WHERE TableB.id IS null
SELECT a.user_name,a.over,b.over FROM user1 a LEFT JOIN user2 b ON a.user_name = b.user_name
user_name | over | over |
---|---|---|
孙悟空 | 斗战圣佛 | 成佛 |
唐僧 | 旃檀功德佛 | NULL |
猪八戒 | 净坛使者 | NULL |
沙僧 | 金身罗汉 | NULL |
与左连接类似,链接反向相反。
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
WHERE TableA.id IS null OR TableB.id IS null
mysql不支持full join的解决方案 使用union all
SELECT a.user_name,a.over,b.over FROM user1 a left join user2 b ON a.user_name = b.user_name
union all
select b.user_name,b.over,a.over from user1 a right join user2 b on b.user_name = a.user_name;
user_name | over | over |
---|---|---|
孙悟空 | 斗战圣佛 | 成佛 |
唐僧 | 旃檀功德佛 | NULL |
猪八戒 | 净坛使者 | NULL |
沙僧 | 金身罗汉 | NULL |
孙悟空 | 成佛 | 斗战圣佛 |
牛魔王 | 被降伏 | NULL |
蛟魔王 | 被降伏 | NULL |
鹏魔王 | 被降伏 | NULL |
狮驼王 | 被降伏 | NULL |
SELECT * FROM TableA CROSS JOIN TableB
这个笛卡尔乘积会产生 4 x 5 = 16 条记录,一般来说,我们很少用到这个语法。但是我们得小心,如果不是使用嵌套的select语句,一般系统都会产生笛卡尔乘积然再做过滤。这是对于性能来说是非常危险的,尤其是表很大的时候。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。