1

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

我有一个文本框,它返回用户选择的“ 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 的记录。

但是当我运行这个查询时,我收到一个错误“子查询返回超过 1 个值......”

有什么建议/想法吗?

4

2 回答 2

3

这应该有效:

SELECT Myval 
from MyTable 
where Number = @Number
OR (NOT EXISTS(SELECT * FROM MyTable WHERE Number = @Number) AND Number = 999)
于 2012-02-20T18:16:28.737 回答
0
SELECT id, Myval 
  FROM MyTable 
 WHERE id = @id
UNION
SELECT id, 999 AS Myval
  FROM MyTable 
 WHERE id = 999
       AND @id IS NULL;
于 2012-02-21T08:47:32.737 回答