首页 > 数据库 >MySQL多表联查、分组查询每组最新的一条数据,并对某一字段进行条件统计

MySQL多表联查、分组查询每组最新的一条数据,并对某一字段进行条件统计

时间:2024-03-06 16:12:04浏览次数:26  
标签:overhaul risk equipment 一字段 MySQL 多表 NULL eq id

起因

本人在写查询的时候遇到了如题所述的要求,多次尝试无果(纯菜),最后发现“sql不会写?那就疯狂联表+堆子查询”。如果有更好的写法,也请在评论区赐教

表信息如下

equipment表:存储设备的名称等信息。其实这个表在接下来的查询中的作用,仅仅只是通过eq_id和其它表进行关联,然后查询到设备名称

DROP TABLE IF EXISTS `equipment`;
CREATE TABLE `equipment`  (
  `eq_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '设备ID',
  `eq_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '设备名称',
  `purchase_time` date NULL DEFAULT NULL COMMENT '采购时间',
  `service_life` int(11) NULL DEFAULT NULL COMMENT '预计使用寿命/年',
  `supplier_id` int(11) NULL DEFAULT NULL COMMENT '供应商ID',
  PRIMARY KEY (`eq_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

overhaul表:要求从这个表中查出最新的一条检修结果,并统计“检修结果”为“正常”(overhaul_reasult = 0)一共多少次

DROP TABLE IF EXISTS `overhaul`;
CREATE TABLE `overhaul` (
  `overhaul_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NULL DEFAULT NULL COMMENT '员工ID',
  `overhaul_time` date NULL DEFAULT NULL COMMENT '检修时间',
  `overhaul_result` int(11) NULL DEFAULT NULL COMMENT '检修结果',
  `eq_id` int(11) NULL DEFAULT NULL '设备ID',
  PRIMARY KEY (`overhaul_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

risk_warning表

DROP TABLE IF EXISTS `risk_warning`;
CREATE TABLE `risk_warning` (
  `risk_warning_id` int(11) NOT NULL AUTO_INCREMENT,
  `eq_id` int(11) NULL DEFAULT NULL COMMENT '设备ID',
  `is_risk_warning` int(11) NULL DEFAULT NULL COMMENT '设备是否存在风险',
  PRIMARY KEY (`risk_warning_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

具体要求

  • 从“overhaul”表中查出“每一个设备”的最新的一条检修结果,并统计“检修结果”为“正常”(overhaul_reasult = 0)的次数;
  • 查询与"eq_id"对应的“eq_name”(设备名称);
  • 查询“risk_warning”的所有内容。
    然后这个需求对我这种菜

    标签:overhaul,risk,equipment,一字段,MySQL,多表,NULL,eq,id
    From: https://www.cnblogs.com/zheyoulangou/p/18046551

相关文章

  • 关于安卓开发远程连接mysql数据库1
    一般关于安卓远程连接数据库通常有两种方法,一种就是直接通过安卓本身远程连接数据库,另一种是通过一个web服务中间层连接mysql(安卓向web发送请求,web实现对数据库的增删改查操作)。两种方法各有优缺点,取决于具体情况:直接连接:优点:直接连接MySQL数据库,可以实现高效的数据交互,减......
  • mysql没走索引原因分析(转)
    原文:https://juejin.cn/post/71149875593818603821、问题工作中,经常遇到这样的问题,我明明在MySQL表上面加了索引,为什么执行SQL查询的时候却没有用到索引?同一条SQL有时候查询用到了索引,有时候却没用到索引,这是咋回事?原因可能是索引失效了,失效的原因有以下几种,看你有没有踩过类......
  • docker-部署mysql8,并映射数据目录和日志目录
    下载镜像dockerpullmysql:8.0.21在主机上准备目录mkdir-p/mysql8/data/mysql8/log  /mysql8/cnf编写配置文件[root@localhostcnf]#catmy.cnf[mysqld]datadir=/mysql/datalog-error=/mysql/log/mysql-log.logpid-file=/mysql/mysqld/mysqld.pids......
  • mysql cpu 1300% 耗尽服务器cpu资源 系统变慢问题排查解决
    每到下午用户使用高峰期发现16核的服务器mysql的cpu经常占用超过1300% 总cpu占用95%以上,以前0.1秒的查询居然要查询10几秒用showprocesslist  命令查看mysql发现很多 select*frome_task_assignment_odmwheretask_code='xxx'看了下这个表有400多万数据,task_code没......
  • mysql视图 触发器 事务 存储过程
    创建视图createviewemp2depasselectemp.*,dep.nameasdep_namefromempinnerjoindeponemp.dep_id=dep.id;   mysql>updateemp2depsetname="EGON"whereid=1;QueryOK,1rowaffected(0.05sec)Rowsmatched:1Changed:1Warnings:0......
  • MySQL 数据库巡检都有哪些内容
    一套正常运行的系统是一个复杂的系统工程,牵涉到主机、操作系统、网络、数据库、中间件、底层存储,还有系统的核心:应用。任何层面的故障都可能造成系统的不可用。今天聊一聊数据库层面的巡检问题。数据库巡检的目的:保障数据库的正常运行,保证数据的安全性,完整性、可靠性。这篇文章......
  • mysql报错代码汇总
    先给大家看几个实例的错误分析与解决方案。1.ERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket'/data/mysql/mysql.sock'问题分析:可能是数据库没有启动或者是端口被防火墙禁止。解决方法:启动数据库或者防火墙开放数据库监听端口。2.ERROR1045......
  • Windows 下 强制修改 MySQL的 root 账号密码
    更新记录点击查看2024年3月6日发布。2024年2月6日初始化。关闭MySQL服务netstopMySQLnetstopMySQL57netstopMySQL80netstop自定义的服务名启动MySQL但不带权限转到mysql/bin目录然后执行mysqld–console–skip-grant-tables–shared-memory如果遇到......
  • mysql undo log
    undolog数据库事务四大特性中有一个是原子性,具体来说就是原子性是指对数据库的一系列操作,要么全部成功,要么全部失败,不可能出现部分成功的情况。实际上,原子性底层就是通过undolog实现的。undolog主要记录了数据的逻辑变化,比如一条INSERT语句,对应一条DELETE的undolog,对于每个......
  • Mysql数据库安全和备份
    一、用户权限认证Mysql通过用户认证机制来和业务系统建立连接通道,当认证成功后,还需要通过访问控制模块来进行相关的权限验证,只有两次验证都通过后,才能继续执行SQL语句操作,这个过程涉及用户管理和访问控制两个模块。用户管理模块用于管理登录用户信息、设置相关权限,Mysql......