2014-10-05 64 views
0

我有查詢爲:如何優化SQL查詢,而無需使用UNION

SELECT i.id AS id 
    FROM table_a i 
    WHERE (i.cat_id IN (92, 224)) 
    GROUP BY id 
    HAVING (COUNT(i.cat_id) = 2 AND SUM(i.cat_id) = 316) 

    UNION 
    (
     SELECT i.id AS id 
     FROM table_a i 
     WHERE (i.cat_id IN (92, 227)) 
     GROUP BY id 
     HAVING (COUNT(i.cat_id) = 2 AND SUM(i.cat_id) = 319) 
    ) 

如何優化這個查詢?

回答

1
SELECT i.id AS id 
    FROM table_a i 
    WHERE (i.cat_id IN (92, 224) OR i.cat_id IN (92, 227)) 
    GROUP BY id 
    HAVING (COUNT(i.cat_id) = 2 
     AND (SUM(i.cat_id) = 316 OR SUM(i.cat_id) = 319)