60

簡単な答えは見つかりません。私のクエリは間違った結果を吐き出しています。これは、「AND」が実際の結合として認識されていないためだと思います。

あなたはこのようなことをすることができますか、そうでない場合、正しいアプローチは何ですか:

SELECT * from X
LEFT JOIN Y
ON
  y.date = x.date AND y.code = x.code

?

4

4 に答える 4

54

これは可能です:

ON 句は、最も一般的な種類の結合条件です。WHERE 句で使用されるのと同じ種類のブール値式を取ります。T1 と T2 の行のペアは、ON 式が true と評価された場合に一致します。

http://www.postgresql.org/docs/9.1/static/queries-table-expressions.html#QUERIES-FROM

あなたのSQLは問題ないようです。

于 2013-07-04T09:29:57.570 に答える
49

大丈夫だよ。実際、キー列やテーブルにまったく関係のないものであっても、ON 句に任意の条件を入れることができます。たとえば、次のようになります。

SELECT * from X
LEFT JOIN Y
    ON y.date = x.date
    AND y.code = x.code
    AND EXTRACT (dow from current_date) = 1
于 2013-07-04T10:21:10.170 に答える