mysql左连接_sql子查询返回的值不止一个

mysql左连接_sql子查询返回的值不止一个在学MySQL的连接时,为了便于记忆,就将左连接 记做 最后结果的总记录数 和 进行左连接的左表的记录数相同,简单的说就是下面这个公式   count(table A left join table…

MySQL左连接时 返回的记录条数 比 左边表 数量多

在学MySQL的连接时,为了便于记忆,就将左连接 记做 最后结果的总记录数 和 进行左连接的左表的记录数相同,简单的说就是下面这个公式  

count(table A left join table B) == count(table A) 

代码100分

毫无疑问,很多时候是这样的,但是,这个结论是错误的,因为一旦table B中有重复的数据时,最后的结果就可能比count(A)的数量多

举个例子:这里有两个表,结构如下

代码100分mysql> desc dep;
+--------+---------+------+-----+---------+----------------+
| Field  | Type    | Null | Key | Default | Extra          |
+--------+---------+------+-----+---------+----------------+
| id     | int(11) | NO   | PRI | NULL    | auto_increment |
| dep_no | int(11) | NO   |     | NULL    |                |
+--------+---------+------+-----+---------+----------------+
2 rows in set (0.03 sec)
 
mysql> desc list;
+----------+----------+------+-----+---------+----------------+
| Field    | Type     | Null | Key | Default | Extra          |
+----------+----------+------+-----+---------+----------------+
| id       | int(11)  | NO   | PRI | NULL    | auto_increment |
| dep_no   | int(11)  | NO   |     | NULL    |                |
| dep_name | char(20) | YES  |     | NULL    |                |
+----------+----------+------+-----+---------+----------------+
3 rows in set (0.02 sec)

向两个表中插入一些数据,如下:

mysql> select * from dep;
+----+--------+
| id | dep_no |
+----+--------+
|  1 |     11 |
|  2 |     12 |
|  3 |     13 |
|  5 |     14 |
+----+--------+
4 rows in set (0.01 sec)
 
mysql> select * from list;
+----+--------+----------+
| id | dep_no | dep_name |
+----+--------+----------+
|  1 |     11 | egg      |
|  2 |     12 | water    |
|  3 |     12 | water    |
|  4 |     13 | rice     |
|  5 |     14 | apple    |
+----+--------+----------+
5 rows in set (0.00 sec)

 注意上面的list表中,id为2和3的记录其实是重复的,然后这时候进行左连接:

代码100分mysql> select * from dep left join list on dep.dep_no = list.dep_no;
+----+--------+------+--------+----------+
| id | dep_no | id   | dep_no | dep_name |
+----+--------+------+--------+----------+
|  1 |     11 |    1 |     11 | egg      |
|  2 |     12 |    2 |     12 | water    |
|  2 |     12 |    3 |     12 | water    |
|  3 |     13 |    4 |     13 | rice     |
|  5 |     14 |    5 |     14 | apple    |
+----+--------+------+--------+----------+
5 rows in set (0.01 sec)

左连接的结果是5条记录,而dep表只有四条记录,推翻了上面的结论,同样的,右连接同样如此。

结论:

  左连接和右连接 最终结果的记录数和左表或者右表记录条数不一定相同

  左连接和右连接只是说以匹配的时候以哪个表为准进行搜索,左连接以左表为准,左表的每一条记录都会进行一次比较。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6909.html

(0)
上一篇 2023-03-31
下一篇 2023-03-31

相关推荐

  • Python 中 nsew 的应用

    Python 中 nsew 的应用nsew是Tkinter库中常用的几何布局,代表了north、south、east、west四个方向。在Tkinter中,nsew可以用于控制组件的相对位置关系。nsew的使用可以使得组件相对位置更加灵活,避免了固定位置布局的局限性。

    2024-01-01
    125
  • Redis服务之常用配置(一) – Linux「建议收藏」

    Redis服务之常用配置(一) – Linux「建议收藏」上一篇博客聊了下redis的简介以及redis的yum安装和源码编译安装需要注意到问题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13378138.html

    2023-03-28
    159
  • mapping测试_分布式测试优点

    mapping测试_分布式测试优点作者:叶奔, 殷成文 不久前我们开源了基于 Kubernetes 的混沌测试工具 Chaos Mesh®,Chaos Mesh 提供了模拟系统异常状况的能力,但这只是混沌工程中的一环,完整混沌工程核…

    2023-03-17
    128
  • Pycharm打包教程

    Pycharm打包教程Pycharm是一个非常流行的Python IDE,由于其强大的功能和易于使用的界面,被广泛用于Python开发。在实际项目中,我们通常需要将Python代码打包成可执行文件(exe或者app),方便交付或者发布。本篇文章主要介绍如何使用Pycharm来打包Python代码。

    2024-08-08
    28
  • mysql编程日记:导入、出某表数据[亲测有效]

    mysql编程日记:导入、出某表数据[亲测有效]登陆mysql后,输入: show variables like '%secure%'; 显示的secure_file_priv如果value值为null,则为禁止,如果有文件夹目录,

    2023-04-12
    157
  • 使用pip安装jieba分词工具

    使用pip安装jieba分词工具在处理中文文本数据时,需要对文本进行分词,分析词汇频次等操作。然而,中文分词是一项比较困难的任务,需要考虑语法、歧义等问题。jieba是一款中文分词工具,它具有以下优点:

    2024-08-04
    31
  • Python翻译函数:让你的代码更加多语言化

    Python翻译函数:让你的代码更加多语言化a href=”https://beian.miit.gov.cn/”苏ICP备2023018380号-1/a Copyright www.python100.com .Some Rights Reserved.

    2023-12-22
    115
  • 倒序遍历Python

    倒序遍历Python在Python语言中,倒序遍历是一种非常常见的操作。倒序遍历Python有多种实现方式,包括倒序遍历数组、前序遍历二叉树、倒序遍历列表、range倒序遍历、vector倒序遍历、v-for倒序遍历、list倒序遍历、map倒序遍历、iterator倒序遍历、for循环倒序遍历等。在本文中,我们将从多个方面对倒序遍历Python做详细介绍,并给出代码示例。

    2024-07-19
    41

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注