首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换或替换MySQL查询中另一列中的值

问替换或替换MySQL查询中另一列中的值
EN

Stack Overflow用户
提问于 2016-04-22 00:24:00
回答 1查看 927关注 0票数 2

我有个小问题。如何将mysql查询中的空值从null替换为我需要的值?

Ifnull,coleasce,with case,with if?我不能让它工作。

示例在

sqlfiddle

第一和第二行:第三列:所有产品的总和,第四列:活动产品,第五列:非活动产品。

第三行和第四行:第三列:所有产品的总和,第四列:活动产品,第五列:非活动产品(

空值=>需要0值

)。

第五和第六行:第三列:所有产品的总和,第四列:活动产品(

空值=>需要0值

),第五列:非活动产品(

空值=>需要第三列中的值

)。

如果我得到非活动产品的空值,我需要将其替换为0,

但是,当我在活动产品中获得空值时,我需要将其替换为0,而在非活动列中,我需要将空值替换为第三列中的值。

没有UPDATE或INSERT函数,因为这是一个mysql视图,我不需要更新或插入任何东西

thx,向前

ps。基本上我需要的是:

如果为active<>0和inactive<>0,则“无值更改”

如果为active<>0和inactive=null,则不活动=0

如果为active=null,则为active=0和非活动产品

_

总和

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-22 00:35:27

我们可以使用

表达式

属性中的列名的位置。

列表。

如果我们希望SQL是可移植的并且符合ANSI标准,我们可以使用

表达式。例如:

代码语言:javascript
复制
SELECT CASE WHEN t.inactive_product IS NULL
           THEN t.product_sum
           ELSE t.inactive_product 
         END AS inactive_product
    FROM ... t

可以(更简明地)使用

功能:

代码语言:javascript
复制
SELECT COALESCE(t.inactive_product,t.product_sum) AS inactive_product
       , COALESCE(t.active_product,0)               AS active_product
    FROM ... t

大多数数据库,包括MySQL,都提供了扩展SQL标准的函数。

同样的结果也可以在MySQL中实现,使用方便

函数。

代码语言:javascript
复制
SELECT IFNULL(t.inactive_product,t.product_sum) AS inactive_product
       , IFNULL(t.active_product,0)               AS active_product
    FROM ... t

后续内容:

在我看来,以下条件在数据中往往是真的,或者至少在我们想要返回的结果中是真的:

代码语言:javascript
复制
product_sum = active_product + inactive_product

我会这样做:

代码语言:javascript
复制
SELECT ... 
     , t.product_sum
     , IFNULL(t.active_product,0) AS active_product
     , IFNULL(t.inactive_product,t.product_sum-IFNULL(t.active_product,0))
       AS inactive_product
 FROM ... t
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36775438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档