一、问题

在mysql左连接时,

  • 写上where时,空值丢失,数据减少
  • 不写where,只用and连接,主表条件不起作用,数据变多。

二、错误复现

1、当使用where+条件时,左连接查询空值丢失

SELECT u.id, u.authority_type, sum(complete_value)
FROM  USER as u LEFT JOIN  `performance_assess` p
ON p.user_id = u.id
where  p.assess_time>'2020-09-01 12:00:00'
and u.authority_type = "USER"GROUP BY u.id

结果:空值丢失,数据变少

2、当使用and连接条件而不写where,左表条件不其作用

SELECT u.id,u.authority_type,sum(complete_value)
FROM  USER as u LEFT JOIN  `performance_assess` p
ON p.user_id = u.id
and  p.assess_time>'2020-09-01 12:00:00'
and u.authority_type = "USER"GROUP BY u.id

结果:空值存在,但user的条件不起作用,数据变多

三、解决办法

通过on … and … where … 实现,

  • on后面跟连接条件
  • and后面跟从表条件:空值会被保留,多个从表条件时就and …and …
  • where后面跟主表条件:过滤主表数据, 多个主表条件时就where…and …
SELECT u.id,u.authority_type,sum(complete_value)
FROM  USER as u LEFT JOIN  `performance_assess` p
ON p.user_id = u.id
and  p.assess_time>'2020-09-01 12:00:00'
where u.authority_type = "USER"GROUP BY u.id

结果:

mysql左连接null值丢失、条件不起作用的问题相关推荐

  1. mysql 左连接 on 多个条件_数据库左右连接on后的限制条件问题

    测试环境: MySQL 5.7.19 HeidiSQL 9.3 数据库界面连接工具(挺好用的) 碰到的问题是: Select * from t1 left outer join t2 on t1.id ...

  2. mysql左连接丢失null值的问题

    一.前言 如题所示,我们有的时候直接使用左连接查询,当右表不存在该数据的时候,是可以查出带有null的列.可是当在where条件中有右表相关的筛选条件时,我们惊奇的发现查询的结果不带null值了,换句 ...

  3. MySQL 左连接、右连接、内连接

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) ...

  4. 简单的mysql左链接_简单谈谈mysql左连接内连接

    前言 最近忙着开发x省冷链追溯系统,天天干到晚上十一点多才回到家,周末也加班,没啥时间写博客,闲下来再好好写写 业务: sql语句统计出入库数据. 问题:只统计了X端入库单. 原因: 没有发现X端的数 ...

  5. MySQL什么用于左连接_简单谈谈mysql左连接内连接

    前言 最近忙着开发x省冷链追溯系统,天天干到晚上十一点多才回到家,周末也加班,没啥时间写博客,闲下来再好好写写 业务: sql语句统计出入库数据. 问题:只统计了X端入库单. 原因: 没有发现X端的数 ...

  6. mysql中与null值不能比较

    在mysql中,选择某field为不等于某值的时候,使用<>符号.但查bug时发现该field为null的并不能查出来. 查原因为: null值不能与其他值进行比较,只能使用is null ...

  7. MySql左连接(left join)查询非常慢

    MySql左连接(left join)查询非常慢 问题描述: 两张表:tb_buyer_account.b_ip. tb_buyer_account表中ip_id字段对应tb_ip表中主键id字段,两 ...

  8. MySQL左连接之后引起的排序问题

    最近遇到一个问题,MySQL左连接之后对左连接表中的数据进行修改之后,数据的顺序发生了变化,并没有按照既定顺序进行排列,一番查询之后觉得需要记录一下 SELECT*FROM(SELECTt.tagCo ...

  9. Mysql左连接详解

    我们在mysql做关联查询时,需要把两张表的数据查询 放入一张新的'虚拟表'中 这时候就需要左连接了 : 直接上代码 SELECT d.id,d.`bzid`,d.`bzpic`,d.`bzdetai ...

最新文章

  1. C# 栈 、队列的概念
  2. 基于visual Studio2013解决面试题之0804复杂链表
  3. 1.2.4 ORACLE_SID的含义
  4. python修改类属性值_python编程入门到实践:直接修改属性的值和通过方法修改属性的值...
  5. java 中required_通过实例学习Spring @Required注释原理
  6. NetBeans 7 Python 又回来了
  7. k8s之wsl2+kind+docker desktop搭建kubevela测试集群
  8. mysql主从同步slave_MySQL主从复制(Master-Slave)实践
  9. 解决opencv在pycharm中无代码自动提示的bug
  10. 用Python解压tgz文件
  11. 怎么使用starwind部署iscsi_服务器配置我该怎么选
  12. selenium控制浏览器操作
  13. PHP制作QQ微信支付宝三合一收款码
  14. java 16进制 负数_Java随笔:小心16进制负数
  15. python算法工程师简历_算法工程师岗位简历范文
  16. CV各领域牛人及资源-有些网页已很久没更新
  17. 四 微信公众号 基础参数说明
  18. HDU 1695(数论,筛选+素因子分解+容斥)
  19. WPF DataGrid 隐藏列
  20. JAVA高并发多线程必须懂的50个问题

热门文章

  1. Portal的认证方式
  2. 网络安全都需要考什么证书呢?
  3. Java 学习 Day08
  4. 使用Microsoft Visual Studio International Pack获得中文字符串的所有拼音组合(处理多音字)
  5. 用手机的同志们都来看看吧 有多少真相我们一直不知道 ……
  6. java写七星彩兑奖_【技术分享】Java Swing界面完成七星彩抽奖系统
  7. [C++] map集合的使用
  8. linux系统安装xhprof,xhprof扩展安装与使用
  9. 强化学习实践(2):Q Leaning
  10. WGS完整流程介绍(原始数据质控、数据预处理、变异检测、数据注释)