gpt4 book ai didi

sql - 如果没有找到结果,则在查询结果中添加空行

转载 作者:行者123 更新时间:2023-12-04 22:41:10 24 4
gpt4 key购买 nike

我正在编写由遗留系统调用的存储过程。遗留系统的约束之一是从存储过程返回的单个结果集中必须至少有一行。标准是在第一列中返回零(是的,我知道!)。

实现这一点的显而易见的方法是创建一个临时表,将结果放入其中,测试临时表中的任何行,然后返回临时表中的结果或单个空结果。

另一种方法可能是在执行主查询之前对主查询中的同一个 where 子句执行 EXISTS。

这两个都不是很令人满意。谁能想到更好的办法。我在想像这样的 UNION 台词(我知道这行不通):

--create table #test
--(
-- id int identity,
-- category varchar(10)
--)
--go
--insert #test values ('A')
--insert #test values ('B')
--insert #test values ('C')

declare @category varchar(10)

set @category = 'D'

select
id, category
from #test
where category = @category
union
select
0, ''
from #test
where @@rowcount = 0

最佳答案

这是一个老问题,但我遇到了同样的问题。
解决方案非常简单,无需双选:

select top(1) WITH TIES * FROM (
select
id, category, 1 as orderdummy
from #test
where category = @category
union select 0, '', 2) ORDER BY orderdummy

通过“WITH TIES”,您将获得所有行(所有行都有一个 1 作为“orderdummy”,因此都是关系),或者如果没有结果,您将获得默认行。

关于sql - 如果没有找到结果,则在查询结果中添加空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3365697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com