0

テーブルがあるとしましょう: T

Id    Val
==========
1     100
2     200
3     300

(400, 200, 100, 700, 900) のような配列内のすべての要素が上記の表に存在するかどうかを確認したいのですが、期待される結果は次のとおりです。

(0, 1, 1, 0, 0) or (false, true, true, false, false)

select ステートメントの書き方について何か考えはありますか?

4

2 に答える 2

1

このようなことができます

SELECT CASE WHEN t.val IS NULL 
            THEN 0 ELSE 1 END value_exists
  FROM 
(
  SELECT 400 val UNION ALL
  SELECT 200 UNION ALL
  SELECT 100 UNION ALL
  SELECT 700 UNION ALL
  SELECT 900
) a LEFT JOIN Table1 t 
    ON a.val = t.val

出力:

| | VALUE_EXISTS |
----------------
| | 0 |
| | 1 |
| | 1 |
| | 0 |
| | 0 |

これがSQLFiddleのデモです

于 2013-08-21T04:45:50.873 に答える
0

Select * from T WHERE Val=400 または Val=200 などと言うことができます。次に、結果を配列にマップします。マップするものは真であり、マップしないものは偽です。

于 2013-08-21T04:41:10.987 に答える