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

JOIN(SELECT ...)ue ON 1 =1?

    意図は無条件です LEFT JOIN異なる CROSS JOINから 右側のテーブル式に一致するものがない場合でも、左側のテーブル式のすべての行が返されます-CROSS JOIN そのような行を結果から削除します。マニュアルの結合の詳細。

    ただし:

    1=1 無意味です PostgresおよびAmazonRedshiftを含むすべての派生物で。 trueを使用するだけです 。これはおそらく、booleanをサポートしていない別のRDBMSから引き継がれています。 正しく入力してください。

    ... LEFT JOIN (SELECT  ...) ue ON true
    

    次に、LEFT JOIN SELECT MIN(modified) FROM userを使用したこの特定のサブクエリには意味がありません SELECTであるため、右側にあります 集計関数(min() )およびGROUP BYはありません 句は常に正確に1行を返します。この場合(ただし、行がない他の場合は除く) 見つかる可能性があります)は、次のように簡略化できます:

    ... CROSS JOIN (SELECT MIN(modified) AS first_modified FROM user) ue
    


    1. SQL SELECT MAX

    2. IntegrityErrorの重複キー値が一意の制約に違反しています-django/postgres

    3. SQL Server:5列にわたる動的ピボット

    4. MySQL / MariaDB/Perconaサーバーのアップグレードプロセスの自動テスト