7

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

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

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

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

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

我写这样的代码是因为 Andrey Gordeev 对这篇文章的回答:你能在 SQL 中有 if-then-else 逻辑吗?

(MSSQL 2000)

谢谢!

4

4 回答 4

5

您需要通过在运行选择之前检查是否会返回任何结果来防止第一次选择。

例如:

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
于 2013-02-28T09:47:16.270 回答
1

这将适用于 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
于 2013-02-28T09:46:19.750 回答
1

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

于 2013-02-28T09:51:51.593 回答
0

试试这个

IF @@ROWCOUNT = 0
BEGIN
    select * from A where A.amount = 45
END
ELSE
BEGIN
    select * from A where A.name = 'linköping'
END
于 2015-02-26T15:18:28.173 回答