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

サブクエリMySQLとしてのユニオン

    SELECT  Parts.id
    FROM    (
            SELECT  parts_id
            FROM    Parts_Category
            WHERE   Parts_Category.category_id = '508'
            UNION
            SELECT  parts_id
            FROM    Parts_Category
            WHERE   Parts_Category.main_category_id = '508'
            ) pc
    JOIN    Parts
    ON      parts.id = pc.parts_id
            AND Parts.status = 'A'
    LEFT JOIN
            Image
    ON      image.id = parts.image_id
    

    MySQLに注意してください Index Mergeを使用できます クエリを次のように書き直すことができます:

    SELECT  Parts.id
    FROM    (
            SELECT  DISTINCT parts_id
            FROM    Parts_Category
            WHERE   Parts_Category.category_id = '508'
                    OR Parts_Category.main_category_id = '508'
            ) pc
    JOIN    Parts
    ON      parts.id = pc.parts_id
            AND Parts.status = 'A'
    LEFT JOIN
            Image
    ON      image.id = parts.image_id
    

    、次のインデックスがある場合はより効率的です:

    Parts_Category (category_id, parts_id)
    Parts_Category (main_category_id, parts_id)
    



    1. PHPデータベースforeach()に無効な引数が指定されました

    2. Java Oracle localhost接続エラー(ORA-12505)

    3. データベースに画像を保存することのデメリットは?

    4. SQL ANY&ALL演算子