mysql 查询后根据值的不同进行判断与修改,SQL中的条件判断语句(case when zhen)用法

您所在的位置:网站首页 sql查询数据显示某一字段内容怎么设置出来 mysql 查询后根据值的不同进行判断与修改,SQL中的条件判断语句(case when zhen)用法

mysql 查询后根据值的不同进行判断与修改,SQL中的条件判断语句(case when zhen)用法

2024-07-03 07:24| 来源: 网络整理| 查看: 265

需求:

mysql 查询后根据值的不同进行判断与修改

语法结构:

SQL中的条件判断语句(case when zhen)用法

SELECT A.品号,属性,

       CASE

           WHEN A.属性 = 'S' THEN

               B.价格

           WHEN A.属性 = 'P' THEN

               C.价格

       END   价格

FROM A

    LEFT JOIN B

        ON B.品号 = A.品号

    LEFT JOIN dbo.C

        ON C.品号 = A.品号;

 

 

案例:

结果:     

SQL语句:

--测试数据 if not object_id(N'A') is null drop table A Go Create table A([品号] int,[属性] nvarchar(21)) Insert A select 1001,N'S' union all select 1002,N'P' GO if not object_id(N'B') is null drop table B Go Create table B([品号] int,[价格] int) Insert B select 1001,8 GO if not object_id(N'C') is null drop table C Go Create table C([品号] int,[价格] int) Insert C select 1002,5 Go --测试数据结束 SELECT A.品号, 属性, CASE WHEN A.属性 = 'S' THEN B.价格 WHEN A.属性 = 'P' THEN C.价格 END 价格 FROM A LEFT JOIN B ON B.品号 = A.品号 LEFT JOIN dbo.C ON C.品号 = A.品号;

 

 

 

 

语法详解:

case具有两种格式。简单case函数和case搜索函数。这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。

--简单case函数 case sex   when '1' then '男'   when '2' then '女’   else '其他' end

--case搜索函数 case when sex = '1' then '男'      when sex = '2' then '女'      else '其他' end

 

--比如说,下面这段sql,你永远无法得到“第二类”这个结果 case when col_1 in ('a','b') then '第一类'      when col_1 in ('a') then '第二类'      else '其他' end  

示例:

如下users表:

上表结果中的"sex"是用代码表示的,希望将代码用中文表示。可在语句中使用case语句:

如果不希望列表中出现"sex"列,语句如下:

 

将sum与case结合使用,可以实现分段统计。如果现在希望将上表中各种性别的人数进行统计,sql语句如下:

 

 

 

拓展:

拓展一: create table 表A(品号 varchar(10),属性 varchar(10))

insert into 表A(品号,属性)  select '1001','S' union all  select '1002','P'

create table 表B(品号 varchar(10),价格 int)

insert into 表B(品号,价格)  select '1001',8

create table 表C(品号 varchar(10),价格 int)

insert into 表C(品号,价格)  select '1002',5

select a.品号,        a.属性,        d.价格  from 表A a  inner join (select 品号,价格 from 表B              union all              select 品号,价格 from 表C) d on a.品号=d.品号

/* 品号         属性         价格 ---------- ---------- ----------- 1001       S          8 1002       P          5

(2 row(s) affected) */

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3