sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLがこの単純な完全結合を実行できないのはなぜですか?

    PostgreSQLはFULL OUTER JOINを実装しています ハッシュまたはマージ結合のいずれかを使用します。

    このような参加の資格を得るには、参加条件にフォームが必要です

    <expression using only left table> <operator> <expression using only right table>
    

    これで、参加条件はします このように見えますが、PostgreSQLには特別なIS NOT DISTINCT FROMはありません。 演算子なので、条件を次のように解析します:

    (NOT ($1 IS DISTINCT FROM $2))
    

    また、このような式はハッシュ結合やマージ結合には使用できないため、エラーメッセージが表示されます。

    私はそれを回避する方法を考えることができます:

    SELECT a_id, NULLIF(a_value, '<null>'),
           b_id, NULLIF(b_value, '<null>')
    FROM (SELECT id AS a_id,
                 COALESCE(value, '<null>') AS a_value
          FROM a
         ) x
       FULL JOIN
         (SELECT id AS b_id,
                 COALESCE(value, '<null>') AS b_value
          FROM b
         ) y
          ON x.a_value = y.b_value;
    

    <null>の場合は機能します valueのどこにも表示されません 列。



    1. ajax呼び出しが多すぎるためにブラウザでメモリ不足エラーが発生しないようにする方法

    2. MySQLのmy.cnfの場所を見つけるにはどうすればよいですか

    3. TextFieldとリストメニューに基づく基準検索

    4. SQL Server 2008 で偶数行または奇数行のみを表示する方法は?