2016-05-20 9 views
0

私はpostgresqlで次のことを行うクエリを書こうとしています: IDの配列を与えたい、データベース内でそれらを探すだけです。そのidに関連付けられた行がない場合は、ids(入力から)SQL - データベースに存在しない入力からIDを返す

例: 入力: (1,2,3,4,5)

テーブル:

id | name 
--------- 
1 bobby 
5 michael 
6 amy 
10 clare 

出力: 2,3,4

「私はNOT INと普通のSELECT文を使用して、ケースに探していますが、私はできますこれを理解しているようだ。

ありがとうございます!

答えて

1

はこれを試してください:あなたは一時テーブルを作成するのではなく、配列を使用したい場合は

SELECT t1.v 
FROM (VALUES (1), (2), (3), (4), (5)) t1(v) 
LEFT JOIN mytable t2 ON t1.v = t2.id 
WHERE t2.id IS NULL 

Demo here

+0

完璧になります!ありがとうございました!私はそのような "tmp"テーブル・アイのものを作るとは思っていませんでした。 – Jerry

0

あなたはまたunnest(array)を使用することができます。

SELECT 
t.v 
FROM 
unnest('{1,2,3,4,5}'::int[]) t(v) 
LEFT JOIN 
mytable ON t.v = mytable.id 
WHERE 
mytable.id IS NULL; 
関連する問題