mysql中外联和 is null 结合使用
2024-09-07 13:35:12
今天学习mysql ,碰到了一个问题:有部门表,员工表,员工表中有一个部门表的外键,查询没有员工的部门名称。
表结构如下:
员工表employees:
部门表department表:
题目很简单呢,信手写出sql如下:
##这种写法很愚蠢怎么能写count(*)=0呢,
SELECT * FROM departments d LEFT JOIN employees e ON d.`department_id` =e.`department_id` GROUP BY d.`department_id` HAVING COUNT(*)=0;
运行以后发现坏了,不对。count(*)=0什么时候都不会用到这样的语句的,因为能查询出来count肯定不会是0.
修改后的正确sql如下:
SELECT d.* ,e.employee_id
FROM departments d
LEFT JOIN employees e
ON d.department_id=e.department_id
WHERE e.employee_id IS NULL;
这个sql利用了外链接的一个特性:如果主表的一条记录和从表任何一条数据都不符合连接条件,则显示出来并且从表应该显示的字段为null.
很简单的问题,可能是自己sql还是没有学好。博客为记。
最新文章
- 《CLR via C#》---枚举标志和标志位
- hdfs的读写数据流
- linux环境下安装jdk
- gradle <;<; 操作符作废
- 使用context来传递数据,一个context是一系列变量
- lintcode:打劫房屋
- lintcode:验证二叉查找树
- [c++]程序的内存划分理解
- android DatePickerDialog配合edittext实现按日期查询
- GitLab Development Kit 环境搭建
- 前端性能监控系统 &; 前端数据分析系统
- 转://WITH AS and materialize hints
- 在windows 7上安装TensorFlow
- 查看项目中的laravel的版本
- ios学习路线—Objective-C(Runtime消息机制)
- Django_rest_framework_基础
- AVL树/线索二叉树
- 自己主动检測&;后台复制光盘内容
- How do I determine if I&#39;m being run under the debugger?
- consul部署多台Docker集群