我之前发布了一个类似的问题 - 这里的要求略有不同。
我有一个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 ...'
有任何建议/想法吗?
答案 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;