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

时间:2013-02-28 09:43:31

标签: sql

如果我有多个选择:

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

IF @@ROWCOUNT = 0
begin
    select * from A where A.amount = 45
end

...如果第一个选择返回东西,我得到1个结果集。但如果它运行第二个,我得到两个结果集;第一个没有行,第二个有一些行。

如果第二个选择运行,有没有办法只返回第二个结果集?

我写这样的代码是因为Andrey Gordeev对这篇文章的回答:Can you have if-then-else logic in SQL?

(MSSQL 2000)

谢谢!

4 个答案:

答案 0 :(得分:4)

在运行选择之前,您需要通过检查是否会在之前获得任何结果来阻止第一次选择。

例如:

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

答案 1 :(得分:1)

这适用于IF-ELSE Logic。 [测试]

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

答案 2 :(得分:1)

不可能返回的结果取决于select语句的数量。 如果您想进行单一选择,请关注@RB或@Jwalin Shah解决方案。

答案 3 :(得分:0)

试试这个

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