从同一个表中的其他列中选择与值匹配的值

时间:2012-02-22 15:38:40

标签: mysql select subquery

我需要帮助编写查询。我正在尝试做的是检查,如果任何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

2 个答案:

答案 0 :(得分:1)

HAVING子句中测试的值应该等于IN子句中的元素数。

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

答案 1 :(得分:1)

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