Join
JOIN用于连表查询,主要有5种用法。
一、笛卡尔积:CROSS JOIN
CROSS JOIN使两张表的所有字段直接进行笛卡尔积,假设表1有m条数据,表2有n条数据,则结果数量为m*n条
SELECT * FROM tab1 CROSS JOIN tab2
二、内连接:INNER JOIN
内连接需要用ON来指定两张表需要比较的字段,最终结果只显示满足条件的数据
SELECT * FROM tab1 INNER JOIN tab2 ON tab1.id1 = tab2.id2
三、左连接:LEFT JOIN
左连接可以看做在内连接的基础上,把左表中不满足ON条件的数据也显示出来,但结果中的右表部分中的数据为NULL
SELECT * FROM tab1 LEFT JOIN tab2 ON tab1.id1 = tab2.id2
四、右连接:RIGHT JOIN
右连接就是与左连接完全相反
SELECT * FROM tab1 RIGHT JOIN tab2 ON tab1.id1 = tab2.id2
五、全连接:OUTER JOIN
全连接就是左连接和右连接的并集,但是MySQL中并不支持全连接的写法
SELECT * FROM tab1 OUTER JOIN tab2 ON tab1.id1 = tab2.id2
不过可以用UNION联合左连接和右连接的结果来代替
SELECT * FROM tab1 LEFT JOIN tab2 ON tab1.id1 = tab2.id2
UNION
SELECT * FROM tab1 RIGHT JOIN tab2 ON tab1.id1 = tab2.id2
结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?