欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql 带多个条件的查询方式

程序员文章站 2022-03-17 14:29:27
mysql 带多个条件的查询环境:mysql 5.7当一个where语句中同时出现多个and 或者or时,需要将多个or用小括号括起来再和and进行“与”,或者将多个and用小括号括起来再与or进行“...

mysql 带多个条件的查询

环境:mysql 5.7

当一个where语句中同时出现多个and 或者or时,需要将多个or用小括号括起来再和and进行“与”,或者将多个and用小括号括起来再与or进行“或”

mysql 多对多条件查询

两个表 user和role 中间表是user_role

mysql 带多个条件的查询方式

查询用户和角色的对应关系

select res.user_name,r.role_name from(select u.user_name,ur.role_id from user as u inner join user_role as ur where u.user_id=ur.user_id) as res 
inner join role as r where res.role_id=r.role_id;

mysql 查询同一字段中同时满足多个条件

mysql 带多个条件的查询方式

mysql 带多个条件的查询方式

分析:

1,先查询出01号同学学习的课程

select c from sc where s='01'

mysql 带多个条件的查询方式

2,查询学习该相关课程的同学编号

select s from sc where c in 
(select c from sc where s='01')

mysql 带多个条件的查询方式

可以看到,我们分别查询了3次,所以出现多个结果,因为是or关系,所以每个选择了1、2、3课程的同学都全部取出,

3,现在需要将出现次数为3的编号取出

select s from sc where c in 
(select c from sc where s='01') 
group by s having count(s) =3

mysql 带多个条件的查询方式

看到编号为1、2、3、4的同学选了与01号同学一致的课程

4,与student表进行连表查询,取出相关信息

select a.* from
student a left join sc b
on a.s = b.s where b.s in (
select s from sc where c in 
(select c from sc where s='01') 
group by s having count(s) =3)
group by a.s

mysql 带多个条件的查询方式

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。