2012-02-22 74 views
0

我需要編寫查詢的幫助。我想要做的是檢查,如果有任何category_id都有(甚至更多)tag_id的。我在尋找最優化的查詢......從同一表中的其他列中選擇匹配值的值

如有CATEGORY_ID有兩個(或更多)TAG_ID的

id    int(10) NO PRI  auto_increment 
client_id  int(10) YES   
category_id  int(10) YES   
tag_id   int(10) YES 

樣本數據:

41 1 137 183 
40 1 137 124 
39 1 136 179 
38 1 136 124 
62 1 143 263 
61 1 143 200 
60 1 143 135 
59 1 143 131 
58 1 143 125 

回答

1
SELECT category_id 
FROM Mytable 
WHERE tag_id IN(183, 200) 
GROUP BY category_id 
HAVING COUNT(Distinct tag_id) = 2 
1

HAVING子句中的測試值應該等於IN子句中的元素數量。

SELECT category_id 
    FROM YourTable 
    WHERE tag_id IN (124, 183) 
    GROUP BY category_id 
    HAVING COUNT(DISTINCT tag_id) = 2; 
相關問題