テーブルがあるとしましょう: 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 ステートメントの書き方について何か考えはありますか?
テーブルがあるとしましょう: 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 ステートメントの書き方について何か考えはありますか?
このようなことができます
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のデモです
Select * from T WHERE Val=400 または Val=200 などと言うことができます。次に、結果を配列にマップします。マップするものは真であり、マップしないものは偽です。