如果为null,则返回多个值

时间:2012-02-20 18:07:55

标签: sql isnull

我之前发布了一个类似的问题 - 这里的要求略有不同。

我有一个textBox,它返回用户选择的'Number'值。(例如:100,200,300)

如果存在用户选择的特定MyTable值的记录/记录,则需要做的是基本检查表Number。如果它返回NULL,那么我需要返回默认Number值为999的记录。

MyTable:
id Number MyVal
1  100    55
2  200    66
3  400    22
4  400    12
5  999    23
6  999    24

这是我到目前为止所做的:(假设textBoxInput(Number)= 300)

SELECT Myval 
from MyTable 
where id in (
    SELECT ISNULL(
        SELECT id 
            from MyTable 
            where Number=300, 
        select id 
            from MyTable 
            where Number = 999
    )
)

所以在这里,由于表中不存在Number = 300,因此返回Number = 999的记录。

但是当我运行此查询时,我收到一条错误'Subquery返回的值超过1 ...'

有任何建议/想法吗?

2 个答案:

答案 0 :(得分:3)

这应该有效:

SELECT Myval 
from MyTable 
where Number = @Number
OR (NOT EXISTS(SELECT * FROM MyTable WHERE Number = @Number) AND Number = 999)

答案 1 :(得分:0)

SELECT id, Myval 
  FROM MyTable 
 WHERE id = @id
UNION
SELECT id, 999 AS Myval
  FROM MyTable 
 WHERE id = 999
       AND @id IS NULL;