mysql数据库sql查询语句:多条件判断

问题:有这样一张表:字段有:账号(id),账户金额(RMB)
条件:如果账户金额>100且<200,此账号为VIP 1,如果账户金额>200,此账户为VIP 2,
希望查询结果为:VIP 1 多少人
VIP 2 多少人

1、创建测试表,

create table test_person(id int, RMB int);

2、插入测试数据

insert into test_person values(1,180);

insert into test_person values(2,170);

insert into test_person values(3,290);

insert into test_person values(4,160);

insert into test_person values(5,299);

insert into test_person values(6,266);

insert into test_person values(7,155);

3、查询表中所有记录,select t.* from test_person t,

4、编写sql,汇总每个vip类型的用户数,

select vip_type, count(distinct id)

  from (select case when RMB>100 and RMB<200 then 'VIP1' when RMB>200 then 'VIP2' end as vip_type, id

          from test_person) t

  group by vip_type

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-30
在sql中使用 case when then可以达到多条件判断的目的

例子
表格 每个国家的人口数据
国家(country) 人口(population)
中国 600
美国 100
加拿大 100
英国 200
法国 300
日本 250
德国 200
墨西哥 50
印度 250
根据这个国家人口数据,统计亚洲和北美洲的人口数量。
sql语句
SELECT SUM(population),
CASE country
WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END
FROM Table_A
GROUP BY CASE country
WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END;

结果
洲 人口
亚洲 1100
北美洲 250
其他 700
第2个回答  2013-11-11
select
case when rmb>100 and rmb <=200 then 'VIP1' else 'VIP2' end 级别,
sum(case when rmb>100 and rmb <=200 then 1 else 0 end) 人数
from 表名
group by case when rmb>100 and rmb <=200 then 'VIP1' else 'VIP2' end

第3个回答  2013-11-11
select t.vip,count(*) from(select case when rmb>100 and rmb < 200 then 'vip1' when rmb>200 then 'vip2' end 'vip',rmb from test) t group by t.vip追问

我的case when then 怎么不能用?

追答

不应该啊 case when then when then....(else) end 注意后面有个end 我已经运行成功了

本回答被提问者采纳
第4个回答  2013-11-11
select distinct (select count(*) from table where 账户金额>100 and 账户金额<200) as vip1,
(select count(*) from table where 账户金额>200) as vip2,
form table

mysql数据库sql查询语句:多条件判断
1、创建测试表,create table test_person(id int, RMB int);2、插入测试数据 insert into test_person values(1,180);insert into test_person values(2,170);insert into test_person values(3,290);insert into test_person values(4,160);insert into test_person values(5,299);insert int...

mysql中一个字段同时满足多个条件,(3个以上)
SELECT t.file_id FROM app_polly_file_labels t WHERE t.style = '清新'or t.style = '甜美'or t.style = '韩潮来袭'GROUP BY t.file_id HAVING count(t.file_id)=3 或者 SELECT a.file_id FROM app_polly_file_labels a INNER JOIN app_polly_file_labels b ON a.file_id = ...

满足不定多个条件,该如何查询MySQL数据库?
使用动态生成sql语句进行实现,根据不同查询条件控制生成不同的查询SQL语句,也就是where 后面的内容;利用开发系统控制where条件,此方法最佳,不但可以控制单多查询条件,也可以实现复杂多条件的查询,例如 = ,<,>,like等复杂查询,亦可对排序需求进行控制;以上为大概解决方法,如有疑问 请追问~~ 谢谢...

mysql中如何查询同时符合两个条件的sql语句
select * from table1 where 条件1 and 条件2 用and即可

sql 多条件筛选语句怎么写?
insert into test_con_x values('人民保险','保险');insert into test_con_x values('金融公司','金融');insert into test_con_x values('无所谓','XX');3、查询表中所有数据,select t.*, rowid from test_con_x t;4、编写sql,根据指定条件查找所需数据,select t.*, rowid from ...

mysql if是多条件该怎么写
处理“我想查 IF中同时满足这两个条件的总数”我的理解是:SELECT COUNT(*) FROM tougao_record WHERE accept_company_id=100 AND channel_type=1 AND check_status=6下面是if语句里面多个条件的使用。IF语句的标准形式IF(expr1,expr2,expr3)expr1可以是单个表达式也可以是多个表达式,且&&,或||...

多选择筛选查询SQL语句怎么写
我做过类似的查询,就是用字典项表的数据id列,与数据表的字符串列做instr比较,比较时,两个数据分别在前后加',',防止第一个和最后一个字典项无法查找出来。举个例子,数据表字典表 dictid name12 wifi13 冰箱14 洗衣机15 电视业务表 query_tableid query_str1 12,13,...

mysql:只用一条sql语句,如何查出一个表里,不同条件对应的数据条数
mysql只用一条sql语句查出一个表里不同条件对应的数据条数的步骤如下:我们需要准备的材料分别是:电脑、sql查询器。1、首先,打开sql查询器,连接上相应的数据库表,例如stu2表。2、点击“查询”按钮,输入:select count(*) from stu2 where sex=1 and age=2 union all select count(*) from ...

mysql 多表联合查询语句怎么写
UNION:利用该关键字可以将多个SELECT 语句的查询结果合并输出,并删除重复行ALL:利用该关键字可以将多个SELECT 语句的查询结果合并输出,但不会删除重复行在使用UNION或ALL关键字将多个表合并输出时,查询结果必须具有相同的结构并且数据类型必须兼容,另外使用UNION时两张表的字段数量也必须相同,否则会提示SQL语句有错误。e...

SQL语句where多条件查询怎么写
a=b or b=c or c=d and id>100用or 和 and,上面的意思是找到TABLE表里,条件为:A=B或者B=C或者C=D,而且这条数据ID>100的。。。注意不同数据库用法不同,不过比较类似MSSQL MYSQL,只是一些语法上的不一样。条件用 OR,或者,只要满足一个条件,AND条件都满足,看你自己需求来写。

相似回答