2016-05-04 6 views
1

私は2つのテーブルAとBを持っています。Bは整数を含むbinderの列を含んでいます。今、A.バインダーに置かれているテーブルAの行を検索したいと思います。Postgresは列の値です

SELECT * FROM A WHERE A.binder=ANY(SELECT binder FROM B) 

をしかし、私は働くだろう

SELECT * FROM A WHERE A.binder=ANY(B.binder) 

または

SELECT * FROM A WHERE A.binder IN array_agg(B.binder) 

のようなものを期待:次の文は、私が欲しいものを行います。 B.バインダーに重複が含まれる可能性があると考えます。そのため、内部結合を使用してステートメントを簡略化することはできません。

+0

これはあまりにも単純な試みです * SELECT a.binder FROM B b内部結合A a ON a.binder = b.binder GROUP BY a.binder ORDER BY a.binder * –

答えて

0

アンINNERからあなたの整数を取得するには、サブクエリを使用しても可能です登録しよう。

SELECT A.* FROM A INNER JOIN (SELECT DISTINCT binder FROM B) AS C ON 
A.binder = C.binder 

なぜANY(B.バインダー)が機能しないのですか?このコンテキストのANYではサブクエリが必要であるためです。

0

テーブルB

SELECT * FROM A 
WHERE A.binder IN (
    SELECT binder FROM B 
); 
+0

これは私のステートメントと同じですか?SELECT * FROM A WHERE A.バインダー= ANY(バインダーからSELECTバインダー) 'を開始ポストから? – StellaMaris

関連する問題