mysql 返回dataset_如果数据集为空,MySQL将返回默认值

我试图使用以下方法查询数据库:

SELECT coalesce(value, "NA") as value

FROM mytable FORCE INDEX (chrs) FORCE INDEX (sites)

WHERE chrom = 1 AND site = 120

如果我在数据库中有一个条目,这个查询工作正常.但是,如果未找到该条目,则返回空数据集.我想更改查询,以便如果在数据库表中找不到它,它仍将返回某种值(对于“值”)而不是空数据集

解决方法:

你怎么添加一个UNION?

( SELECT coalesce(value, "NA") as value

FROM mytable FORCE INDEX (chrs) FORCE INDEX (sites)

WHERE chrom = 1 AND site = 120

)

UNION ALL

( SELECT 'NA' as value

FROM mytable

WHERE NOT EXISTS

( SELECT coalesce(value, "NA") as value

FROM mytable FORCE INDEX (chrs) FORCE INDEX (sites)

WHERE chrom = 1 AND site = 120

)

)

或者如果你想做一次合并,这样你就可以更容易地更改返回的部分,你可以这样选择它.

SELECT COALESCE(value, "NA") as value

FROM

(

( SELECT value

FROM mytable FORCE INDEX (chrs) FORCE INDEX (sites)

WHERE chrom = 1 AND site = 120

)

UNION ALL

( SELECT NULL as value

FROM mytable

WHERE NOT EXISTS

( SELECT value as value

FROM mytable FORCE INDEX (chrs) FORCE INDEX (sites)

WHERE chrom = 1 AND site = 120

)

)

) t

标签:mysql,select,r,coalesce

来源: https://codeday.me/bug/20190708/1404035.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值