MySQL的条件分组查询SQL语句写法

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL的条件分组查询SQL语句写法

有这样一个需求,如下表所示,要查询同时满足dept_Id 和 course_id的条件的所有数据,但是这个数据可能有两组。

例如当查查询当dept_id=20 并且 course_id=100003的数据

和dept_id=3并且 course_id=100002

如图所示,要根据下表的数据查询上表的值。teacher_Id为169时对应两组数据。

这样的查询又不能group分组,也不能单独查询dept_id in (3,20) and course_id in (100002,100003)

查询查出来的数据是不准确的。

所以这里要用or来拼接查询。

我的实现方式是:

SELECT
  pro.teacher_project_id AS id,
  pro.dept_id,
  pro.course_id 
FROM
  t_teacher_project AS pro 
WHERE
  pro.teacher_project_id IN (
    SELECT
      t_teacher_project.teacher_project_id 
    FROM
      t_teacher_project 
    WHERE
      t_teacher_project.dept_id = 3 
      AND t_teacher_project.course_id = 100002 
    )
  OR pro.teacher_project_id IN (
    SELECT
      t_teacher_project.teacher_project_id 
    FROM
      t_teacher_project 
    WHERE
      t_teacher_project.dept_id = 20 
    AND t_teacher_project.course_id = 100003 
  )
    OR pro.teacher_project_id IN (
    SELECT
      t_teacher_project.teacher_project_id 
    FROM
      t_teacher_project 
    WHERE
      t_teacher_project.dept_id = 20 
    AND t_teacher_project.course_id = 100002 
  ) 

这样,如果再有多个分组也后面直接拼接or就行了,or后面的分组的条件。

这样就可以实现将条件进行分组查询了。

我这种写法可能不太简介,如果有更好的写法欢迎留言指教,非常感谢!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
14天前
|
SQL
sql语句加正则 简化查询
sql语句加正则 简化查询
14 0
sql语句加正则 简化查询
|
20天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
|
20天前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
|
20天前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
|
5天前
|
SQL 关系型数据库 MySQL
mysql 数据库查询 查询字段用逗号隔开 关联另一个表并显示
mysql 数据库查询 查询字段用逗号隔开 关联另一个表并显示
17 2
|
7天前
|
关系型数据库 MySQL Shell
MySQL 查询
MySQL 查询
|
9天前
|
SQL 关系型数据库 MySQL
DQL语言之基础查询(mysql)
DQL语言之基础查询(mysql)
|
9天前
|
SQL 关系型数据库 MySQL
DQL语言之连接查询(mysql)
DQL语言之连接查询(mysql)
|
9天前
|
关系型数据库 MySQL
MySQL全局库表查询准确定位字段
information_schema.COLUMNS 详细信息查询
199 4
|
9天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
34 3