zoukankan      html  css  js  c++  java
  • 只需要返回一条数据,并且必须返回一条数据的时候的写法

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


    原创地址: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日

  • 相关阅读:
    BFS(广搜训练题目)
    练习赛1(补题)
    练习赛1(AC题)
    codeup 1743: 算法3-4:表达式求值
    数学相关(更新ing)
    c语言常用函数(更新ing)
    大牛的博客(学习不止,更新不止)
    51nod 1005 大数加法
    js1-----预览js内容
    css10---转载---定位,浮动
  • 原文地址:https://www.cnblogs.com/QQ826688096/p/10713372.html
Copyright © 2011-2022 走看看