sql >> Databáze >  >> RDS >> Mysql

Sjednocení jako dílčí dotaz 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

Všimněte si, že MySQL můžete použít Index Merge a svůj dotaz můžete přepsat takto:

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

, což bude efektivnější, pokud budete mít následující indexy:

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



  1. Příliš mnoho připojení Hibernate a mysql

  2. Předejte proměnné MySQL do skriptu z příkazového řádku

  3. Pokud jsou splněna kritéria, přiřaďte součet sloupce jednomu datu v jiném sloupci

  4. Hodnoty rozděleného sloupce MySQL pro použití v dílčím dotazu?