2012-02-20 19 views
1

私は以前同様の質問を投稿していました。nullの場合は複数の値を返します

は、私は、ユーザーが選択した「Number」の値を返すテキストボックスを持っている。(例:100200300)

記録/レコードが Number特定のために存在する場合、基本的にテーブル MyTableをチェックしている何をすべきか

ユーザーによって選択された値。 (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 
    ) 
) 

:それはNULLを返した場合、私はここで999

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

のデフォルト数値のレコードを返すために必要なのは、私がこれまで持っているものですしたがって、ここでは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

0
SELECT id, Myval 
    FROM MyTable 
WHERE id = @id 
UNION 
SELECT id, 999 AS Myval 
    FROM MyTable 
WHERE id = 999 
     AND @id IS NULL; 
関連する問題