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

1つのテーブルのすべての行に他のテーブルの対応者が含まれていない場合でも、MySQLの2つのテーブルから選択するにはどうすればよいですか?

    これを行うには、外部結合が必要です。ちなみに、暗黙的な結合を使用してクエリを作成する方法は古く、推奨されていません。 JOINキーワードの使用をお勧めします。これにより、内部結合を外部結合に簡単に変更することもできます。

    FROM categories AS sc
    LEFT JOIN products AS s
    ON s.ownerid=sc.id
    

    NULLの代わりに0を返すには、 IFNULL(...、0) 。クエリ全体は次のようになります:

    SELECT
        sc.*,
        IFNULL(MIN(s.price), 0) AS minp,
        IFNULL(MAX(s.price), 0) AS maxp
    FROM categories AS sc
    LEFT JOIN products AS s
    ON s.ownerid = sc.id
    GROUP BY sc.id
    

    製品がないカテゴリでは、0ではなくデフォルトのNULLを返す方がよいかどうかを検討することもできます。



    1. SQL、Postgres OID、それらは何であり、なぜそれらは有用ですか?

    2. MySQLの列を更新します

    3. 'Order by'が指定されていない場合、クエリはレコードセットに対してどの順序を選択しますか?

    4. Postgresql:MacOSXを使用してpg_hba.confファイルを見つける方法