2
  Select distinct A.col1, B.col2, col3
   from A inner join B on A.id = B.id
   and B.id in 

       (select distinct col2 from B where ..... )

PostgreSQLのplpgsqlパーサーは、括弧内のサブクエリ内の修飾されていない「col2」を好みません。サブクエリで言及されているテーブルは1つしかないので、パーサーは何もないところにあいまいさを作り出していませんか?

4

2 に答える 2

2

いいえ。外部クエリ列はサブクエリでも使用できます。そうしないと、内部クエリと外部クエリをバインドできません。それは忘れがちなことであり、あなたがそれを予期していない場合はあなたを捕まえることができます。

于 2013-01-26T15:13:39.063 に答える
2

あなたが表示するようなSQLクエリはうまくいきます。

あなたがplpgsqlに言及しているので、暗闇の中での私のショットは、実際には plpgsql 関数であるものからのフラグメントのみを表示しており、関数本体のどこにでも表示される関数パラメーターとの名前の競合に遭遇することです (動的 SQL を除く)。

于 2013-01-26T17:53:13.240 に答える