如何按条件分组

时间:2019-01-07 04:39:01

标签: mysql

我有一个design_category_table

+-----------+----------+------------+
| Id        | IdDesign | IdCategory |
+-----------+----------+------------+
| 1         | 1        | 1          |
| 2         | 1        | 2          |
| 3         | 2        | 1          |
| 4         | 2        | 2          |
| 5         | 2        | 3          |
| 6         | 3        | 1          |
| 7         | 3        | 2          |
| 8         | 3        | 3          |
| 9         | 3        | 4          |
+-----------+----------+------------+

1)我想按IdDesign分组,其中IdCategory的条件列表包含(1 AND 2 AND 3)

结果将仅显示2行

+-----------+----------+------------+
| Id        | IdDesign | IdCategory |
+-----------+----------+------------+
|3          | 2        | 1          |
|6          | 3        | 1          |
+-----------+----------+------------+

2)我想按IdDesign与IdCategory等于(1 AND 2 AND 3)的条件列表进行分组

结果将仅显示1行

+-----------+----------+------------+
| Id        | IdDesign | IdCategory |
+-----------+----------+------------+
|3          | 2        | 1          |
+-----------+----------+------------+

请帮助我...!

1 个答案:

答案 0 :(得分:0)

您可以在下面尝试-

DEMO

select min(Id) as Id,IdDesign,min(IdCategory)
from tablename
where IdCategory in (1,2,3)
group by IdDesign
having count(distinct IdCategory)>=3

输出:

Id  IdDesign    IdCategory
3     2          1
6     3          1

select min(id) as id, min(IdDesign) as IdDesign,IdCategory  
from
(  
select min(Id) as Id,IdDesign,min(IdCategory)
    from tablename
    where IdCategory in (1,2,3)
    group by IdDesign
    having count(distinct IdCategory)>=3
)A group by IdCategory