2012-02-20 127 views
1

我以前發佈過類似的問題 - 這裏的要求略有不同。如果爲空,則返回多個值

我有一個文本框返回的用戶選擇「Number的價值。(如:100,200,300)

什麼需要做的是基本檢查表MyTable如果針對特定Number存在的記錄/記錄用戶選擇的值。如果返回NULL,然後我需要返回記錄的999

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

這裏默認的數字值是我到目前爲止有:(假設textBoxInput(數)= 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的記錄。

但是當我運行此查詢,我發現了一個錯誤「子查詢返回多個值......」

任何建議/想法?

回答

3

這應該工作:

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

三江源!這就像一個魅力!+1 :) – user656523 2012-02-20 18:29:13

0
SELECT id, Myval 
    FROM MyTable 
WHERE id = @id 
UNION 
SELECT id, 999 AS Myval 
    FROM MyTable 
WHERE id = 999 
     AND @id IS NULL; 
相關問題