mysql 如何先判断组内所有数据flag(flag只能为1或者2) 若有一个值为1则这个组的flag为1,否则flag为2
1个回答
展开全部
select count(*),分组列 from 表名 group by 分组列 having flag=1;
按分组列分组,返回组中含flag=1的记录数
例子:
id 省份 flag
1 河北 1
2 河北 2
3 河南 2
4 河南 2
select count(*),省份 from 表名 group by 省份 having flag=1;
得出结果为
河北 flag含1
按分组列分组,返回组中含flag=1的记录数
例子:
id 省份 flag
1 河北 1
2 河北 2
3 河南 2
4 河南 2
select count(*),省份 from 表名 group by 省份 having flag=1;
得出结果为
河北 flag含1
追问
谢谢,您的回答和我要的效果差不多了,我要的是还要同时查出河南分组的状态。这要怎么实现呢,万分感谢!
追答
select * from (select * from 表名 order by flag) as 新表名 group by 省份
思路:
先按flag升序排序,结果指定为新表
从新表中按省份分组,分组是有排序、去重效果的
得出的结果就是每个省份一条记录,flag含1则保留的就是含1的,不含1,保留含2的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询