2017-04-10 3 views
0

提供されているIDのレコードを1つだけ取得する必要があるという要件があります。 IDがテーブルに存在する場合、それはその特定のレコードをフェッチし、それが存在しない場合、それはNULL値を持つレコードSQL要件のレコードを1つだけ取り出す必要があります

例 卓上フェッチする:例えばdemo_table

id 
----------- 
1 
2 
3 
4 
5 
(null) 

を私は1としてIDを渡している場合は、同様に1行だけを返す必要があります同様に私は4番目の行をフェッチする必要があります4としてIDを渡しているが、私はテーブルにないIDを渡している場合、 NULL値のレコード。

私はこれをSingle SQLクエリにします。あなたの助けを前もってありがとう。 詳細情報が必要な場合はお知らせください。

また、ROWNUM、ROWIDの概念もありません。 1つのクエリである必要があり、私が正しくあなたの要求を得た場合は、UNIONなど

+0

あなたはNULL値のレコードを言うときに、idだけをフェッチしたいのですか複数の列がありますか?あなたはちょうど常に行を取得したいと思うように聞こえ、IDが存在しない場合は、返された行を処理するのではなく、NULLを返す必要があります。 – gvenzl

答えて

2

を試してみて何MINUS、すなわちんIDの代わりにNULLを戻したいとします。

非常に簡単なトリックは以下の通りです:

SELECT MAX(id) FROM demo_table WHERE id = 4; 

これは、ID 4が返されるか、存在しない場合、それは代わりにNULLを返します。 WHERE句に必ずIDを含めると、MAXはNO ROWS FOUNDを処理するだけではありません。

+0

これは私を助けます:) – user3721687

0

は、以下の

SELECT CASE WHEN id = 123 THEN 'NULL' ELSE id END id 
    FROM (SELECT TO_CHAR (NVL (MIN (id), '123')) AS id 
      FROM my_table 
     WHERE id = 6) 

アップデート1

SELECT CASE WHEN TO_CHAR (id) IS NULL THEN 'NULL' ELSE id END id, 
     CASE WHEN ename IS NULL THEN 'NULL' ELSE ename END ename 
    FROM (SELECT TO_CHAR (id) id, ename 
      FROM my_table 
     WHERE id = 6 
     UNION 
     SELECT NULL, NULL 
      FROM DUAL 
     WHERE NOT EXISTS 
        (SELECT id, ename 
        FROM my_table 
        WHERE id = 6)) 
+0

はい、私はこの1つのおかげで使用することができます:) – user3721687

+0

@ user3721687あなたがこれが便利で正しいとわかったら、受け入れてupvoteしてください。 – user75ponic

+0

クエリは正しいですが、完全なNULL行を取得する必要がある場合は?より多くの列があり、私は2番目の列を取得する必要がある場合。 – user3721687

0
select t.* from 
(select * from demo_table 
     where id = 4 or id is null) as t 
where t.id = 
    (IF EXISTS(SELECT Id FROM demo_table WHERE ID = 4) 
      SELECT 4 
      ELSE 
      SELECT null) ; 
+0

'id = 4'がテーブルにない場合は、何も返しません。 –

+0

私はテーブルにない他のIDを渡している場合、bczは動作しません。(NO_DATA_FOUND) – user3721687

+0

私は答えを編集しました。助けてくれることを願っています。 – puzeledbysql

2
SELECT * FROM 
(
    select id from demo_table where id = 4 
    union 
    select null from dual 
) 
where rownum = 1 
order by id DESC 
+0

rownumを使用できません。 – user3721687

+0

NO FAIR - 私は – AntDC

+0

と答えた後にその規定を追加しましたが、これは私たちの要求です。クエウンでrownumを使用することはできません。 私は説明でそれを言及することを忘れてしまったので、今すぐ – user3721687

関連する問題