如果我有多个选择:
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)
谢谢!
答案 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