Sql 我可以有多个选择但只返回一个结果集吗

Sql 我可以有多个选择但只返回一个结果集吗,sql,Sql,如果我有多个这样的选择: select * from A where A.name = 'linköping' IF @@ROWCOUNT = 0 begin select * from A where A.amount = 45 end …如果第一次选择返回内容,我将得到1个结果集。但是如果它运行第二个,我会得到两个结果集;第一个没有行,第二个有一些行 如果运行第二个select,是否有方法仅返回第二个结果集 我写这样的代码是因为Andrey Gordeev对这篇文章的回答: MS

如果我有多个这样的选择:

select * from A where A.name = 'linköping'

IF @@ROWCOUNT = 0
begin
    select * from A where A.amount = 45
end
…如果第一次选择返回内容,我将得到1个结果集。但是如果它运行第二个,我会得到两个结果集;第一个没有行,第二个有一些行

如果运行第二个select,是否有方法仅返回第二个结果集

我写这样的代码是因为Andrey Gordeev对这篇文章的回答:

MSSQL 2000


谢谢

这将使用IF-ELSE逻辑。[测试]

DECLARE @count as int
set @count = (SELECT count(1) from A where A.name = 'linköping')
if (@count = 0)
BEGIN
    select * from A where A.amount = 45
END
ELSE
BEGIN
select * from A where A.name = 'linköping'
END

在运行select之前,您需要检查是否会返回任何结果,以防止第一次选择

例如:

IF EXISTS (SELECT 1 FROM A WHERE A.name = 'linköping')
BEGIN
    SELECT * FROM A WHERE A.name = 'linköping'
END
ELSE 
BEGIN
    SELECT * FROM A WHERE A.amount = 45
END

否不可能返回的结果取决于select语句的数量。 如果要执行单选,请按照@RB或@Jwalin-Shah解决方案进行操作。

试试这个

IF @@ROWCOUNT = 0
BEGIN
    select * from A where A.amount = 45
END
ELSE
BEGIN
    select * from A where A.name = 'linköping'
END

在这种情况下,您应该使用IF-exist。如果您将第一行替换为IF-EXISTS,则最好从A.name='linkoping'@ViswanathanIyer同意的位置中选择1。这将略微提高性能。我必须承认,我复制并粘贴了以下行中的查询: