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

it2022-05-09  19

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

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

使用条件查询你该查询的数据;然后 union all 同样的字段个数,返回默认的值,如,都返回“0”;因为这样操作会导致本来会查出一条结果的数据的sql,现在变成了会返回一条或者两条数据了,所以,你需要取其中的一条,这里就可以使用手段了;让两条sql的查询列表都加上一个字段,比如叫“paixu”,然后,把自己真正需要返回的那个sql查询列表里面加入“‘1’ as paixu”;把union all的那个sql查询列表里面加入**“‘0’ as paixu”然后在外层再套一层查询,让其按照**“排序”**字段进行倒序(因为如果你的查询条件能查询出数据的时候,他的paixu的值是1,没有值的时候就是union all的结果了,就是0,所以得倒序);然后再再外层套一层,用于使用oracle函数rownum=1,来取第一条数据。(这里之所以这么写,是因为oracle的函数rownum的取值,不是很稳定,加了个paixu字段后,可以确保paixu=1的一定会在第一个)。这样就可以保证,不管会不会查询出结果,结果都会返回一条数据的。 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日

转载于:https://www.cnblogs.com/QQ826688096/p/10713372.html


最新回复(0)