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

WHERE句の後にJOINが続く

    SQLの構文をRDBMSエンジンによって実行される実行フローと間違えていると思います:このクエリ

    SELECT a,b FROM big b
    LEFT JOIN (SELECT b as small_b,c,d FROM small) ON big.b=small.small_b
    WHERE b.foo='bar'
    

    bigの行にのみ結合を実行するように最適化されます foo='bar'でフィルタリング big全体ではなく条件 、WHEREであるにもかかわらず、その価値のあるクエリオプティマイザによって 句は、JOINの後にテキストで表示されます 。

    内部のSELECTなしでこれを書き直したい場合があります このように:

    SELECT t1.a as big_a, t1.b as big_b, t2.b as small_b, t2.c, t2.d
    FROM big t1
    LEFT JOIN small t2 ON t1.b = t2.b
    WHERE t1.foo='bar'
    


    1. pl sqlで匿名ブロックを使用してテーブル全体を出力する方法は?

    2. SQL Server(T-SQL)で日付から月を抽出する3つの方法

    3. 参照テーブルの特定のキーに一致する一意の制約はありません

    4. PostgreSQLユーザーパスワードを変更するにはどうすればよいですか?