只需要返回一条数据,并且必须返回一条数据的时候的写法

当你查询一张表不确定通过条件查询后,只需要返回一条数据的时候,但是你不确定是不是会直接返回的空数据的时候,可以使用这么个思路:


原创地址:https://blog.csdn.net/QQ826688096/article/details/89182210
思路是:

  1. 使用条件查询你该查询的数据;
  2. 然后 union all 同样的字段个数,返回默认的值,如,都返回“0”;
  3. 因为这样操作会导致本来会查出一条结果的数据的sql,现在变成了会返回一条或者两条数据了,所以,你需要取其中的一条,这里就可以使用手段了;
  4. 让两条sql的查询列表都加上一个字段,比如叫“paixu”,然后,把自己真正需要返回的那个sql查询列表里面加入“‘1’ as paixu”;把union all的那个sql查询列表里面加入**“‘0’ as paixu
  5. 然后在外层再套一层查询,让其按照**“排序”**字段进行倒序(因为如果你的查询条件能查询出数据的时候,他的paixu的值是1,没有值的时候就是union all的结果了,就是0,所以得倒序);
  6. 然后再再外层套一层,用于使用oracle函数rownum=1,来取第一条数据。(这里之所以这么写,是因为oracle的函数rownum的取值,不是很稳定,加了个paixu字段后,可以确保paixu=1的一定会在第一个)。
  7. 这样就可以保证,不管会不会查询出结果,结果都会返回一条数据的。
select a.xh,a.xm,a.xb from (
  select * from (
    select case when t.xh='1' then '1' else '0' end xh,
           case when t.xm='1' then '1' else '0' end xm,
           case when t.xb ='1' then '1' else '0' end xb,
           '1' as paixu
    from demoTable t where t.xh='10086'
    union all
    select '0' as xh,'0' as xm,'0' as xb,'-1' as paixu from dual
  )t order by t.paixu desc
)a
where rownum=1;

这样写的结果就是,当通过查询条件没有查询出数据后,会返回一条xh,xm,xb的值都是 ‘0’ 的一条数据。这样服务端代码就会好判断多了。

当然,我只是有这种想法,要实现这种效果的思路千千万,不要喷,开心就好。2019年4月10日

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值