1

以前に同様の質問を投稿しました-ここでは少し異なる要件です。

ユーザーが選択した ' ' 値を返す textBox がありますNumber(例: 100,200,300)

行う必要があるのは、基本的に、ユーザーが選択した特定の値MyTableのレコードが存在するかどうかをテーブルで確認することです。NumberNULL が返された場合、デフォルトの 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 のレコードを返します。

しかし、このクエリを実行すると、「サブクエリが複数の値を返しました...」というエラーが表示されます。

提案/アイデアはありますか?

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 に答える