号外号外: 原[图享网]更名为 码友网(codedefault.com) 啦,感谢大家一路上的陪伴与支持。代码的世界里,码友网与大家一起同行!

[MySQL]MySQL数据库中如何使用IF判断语句查询基于列值的结果?

MySQL 作者: Rector 1613阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

[MySQL]MySQL数据库中如何使用IF判断语句查询基于列值的结果?

问题描述

比如有以下数据表(report)的查询语句:

SELECT id, amount,type FROM report

需要查询的是根据 report 表的 type 字段进行判断,如果 type='P'amount 为:amount,如果 type='N'amount 为:-amount ,在MySQL语句中如何使用判断实现呢?

方案一

SELECT id, 
       IF(type = 'P', amount, amount * -1) as amount
FROM report

如果需要处理 null 值,则:

SELECT id, 
       IF(type = 'P', IFNULL(amount,0), IFNULL(amount,0) * -1) as amount
FROM report

方案二

select id,
    case report.type
        when 'P' then amount
        when 'N' then -amount
    end as amount
from
    `report`

方案三

SELECT CompanyName, 
    CASE WHEN Country IN ('USA', 'Canada') THEN 'North America'
         WHEN Country = 'Brazil' THEN 'South America'
         ELSE 'Europe' END AS Continent
FROM Suppliers
ORDER BY CompanyName;

方案四

select 
  id,
  case 
    when report_type = 'P' 
    then amount 
    when report_type = 'N' 
    then -amount 
    else null 
  end
from table

方案五

SELECT 
    id, IF(report.type = 'P', abs(amount), -1*abs(amount)) as amount
FROM  report

方案六

SELECT id, amount
FROM report
WHERE type='P'

UNION

SELECT id, (amount * -1) AS amount
FROM report
WHERE type = 'N'

ORDER BY id;

阅读了该文章的人还浏览了...

本文永久链接码友网 » [MySQL]MySQL数据库中如何使用IF判断语句查询基于列值的结果?

发布于: 2018-01-18 09:51:44
分享扩散: