当前位置:网站首页>mysql join技巧
mysql join技巧
2022-07-28 05:24:00 【奇怪的守护神】
笛卡尔积:CROSS JOIN
要理解各种JOIN首先要理解笛卡尔积。笛卡尔积就是将A表的每一条记录与B表的每一条记录强行拼在一起。所以,如果A表有n条记录,B表有m条记录,笛卡尔积产生的结果就会产生n*m条记录。下面的例子,t_blog有10条记录,t_type有5条记录,所有他们俩的笛卡尔积有50条记录。有五种产生笛卡尔积的方式如下。
内连接:INNER JOIN
内连接INNER JOIN是最常用的连接操作。从数学的角度讲就是求两个表的交集,从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录。有INNER JOIN,WHERE(等值连接),STRAIGHT_JOIN,JOIN(省略INNER)四种写法。至于哪种好我会在MySQL的JOIN(二):优化讲述。示例如下。
左连接:LEFT JOIN
左连接LEFT JOIN的含义就是求两个表的交集外加左表剩下的数据。依旧从笛卡尔积的角度讲,就是先从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录(见最后三条)。
右连接:RIGHT JOIN
同理右连接RIGHT JOIN就是求两个表的交集外加右表剩下的数据。再次从笛卡尔积的角度描述,右连接就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上右表中剩余的记录(见最后一条)。
外连接:OUTER JOIN
外连接就是求两个集合的并集。从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录,最后加上右表中剩余的记录。另外MySQL不支持OUTER JOIN,但是我们可以对左连接和右连接的结果做UNION操作来实现。
USING子句
MySQL中连接SQL语句中,ON子句的语法格式为:table1.column_name = table2.column_name。当模式设计对联接表的列采用了相同的命名样式时,就可以使用 USING 语法来简化 ON 语法,格式为:USING(column_name)。
所以,USING的功能相当于ON,区别在于USING指定一个属性名用于连接两个表,而ON指定一个条件。另外,SELECT *时,USING会去除USING指定的列,而ON不会。实例如下。
自然连接:NATURE JOIN
自然连接就是USING子句的简化版,它找出两个表中相同的列作为连接条件进行连接。有左自然连接,右自然连接和普通自然连接之分。在t_blog和t_type示例中,两个表相同的列是id,所以会拿id作为连接条件。
另外千万分清下面三条语句的区别 。
自然连接:SELECT * FROM t_blog NATURAL JOIN t_type;
笛卡尔积:SELECT * FROM t_blog NATURA JOIN t_type;
笛卡尔积:SELECT * FROM t_blog NATURE JOIN t_type;
边栏推荐
- clock tree分析实例
- 福禄克DSX2-5000、DSX2-8000模块如何找到校准到期日期?
- How to view the transfer function of the module directly built by Simulink
- In asp Usage of cookies in. Net
- ICC2分析时序的神器 analyze_design_violations
- For a large amount of data, matlab generates Excel files and typesetting processing source code
- Electric fast burst (EFT) design - EMC series hardware design notes 4
- VAN(DWConv+DWDilationConv+PWConv)
- What is the AEM testpro cv100 and fluke dsx-8000 of category 8 network cable tester?
- Precautions for EMI design of switching power supply circuit in layout process
猜你喜欢

Trouble encountered in cable testing -- a case study of a manufacturer?

低功耗设计-Power Switch

简述EMD分解、希尔伯特变换、谱方法

Shuffle Net_v1-shuffle_v2

Fluke dtx-sfm2 single mode module of a company in Hangzhou - repair case

Agilent安捷伦 E5071测试阻抗、衰减均正常,惟独串扰NG?---修复方案

ICC2(一)Preparing the Design

Design and analysis of contactor coil control circuit

MAE 掩码自编码是可扩展的学习

【服务器使用记录】通过跳板机登录远程服务器并进行文件传输
随机推荐
set_false_path
set_multicycle_path
set_ case_ analysis
雷达成像 Matlab 仿真 3 —— 多目标检测
Low power design isolation cell
Bag of Tricks训练卷积网络的技巧
Perl入门学习(八)子程序
Perl入门学习(十)格式化输出
ConNeXt
BERT基于transformer的双向编码器
PyTorch 学习笔记 3 —— DATASETS & DATALOADERS & TRANSFORMS
Arduino reads the analog voltage_ How mq2 gas / smoke sensor works and its interface with Arduino
EfficientNET_ V1
RS232 RS485 RS422 communication learning and notes
EMC experiment practical case ESD electrostatic experiment
Perl入门学习(十一)文件操作
3、 Openvino practice: image classification
ICC2(三)Clock Tree Synthesis
Install visual studio 2019 steps and vs2019 offline installation package on win7
论文神器 VS Code + LaTex + LaTex Workshop
