很抱歉,如果以前曾问过这个问题。有人提出了类似的问题。这些已被记录,审查和应用,但未实现我想要的结果。我敢肯定,这大部分都是微不足道的。我希望能向正确的方向提供指导。基本上,我想要实现的是如果满足条件则将数据库中的一组项目组合在一起,然后将这些项目保留下来,即如果不满足则不进行分组。
Example
=========
id chk chk2 chk3
1 2 3 3
2 2 3 3
3 2 3 3
4 3 2 2
5 3 1 1
6 5 1 1
所需的输出
id chk chk2 chk3
1 2 3 3
4 3 2 2
5 3 1 1
6 5 1 1
基本上,我要实现的是如果数量> 2,则按 chk 对任何内容进行分组,如果不是,则按原样保留。
如何实现?
我所做的如下:
SELECT *
FROM db_name
GROUP BY CASE WHEN COUNT(*)>2 THEN chk,chk2,chk3 ELSE NULL END
答案 0 :(得分:0)
您可以尝试使用相关子查询
select * from tablename a
where id in (select min(id) from tablename b where a.chk=b.chk)
答案 1 :(得分:0)
使用UNION:
SELECT MIN(ID) ID, chk, chk2, chk3
FROM db_name
where chk > 2
GROUP BY chk, chk2, chk3
UNION ALL
SELECT ID, chk, chk2, chk3
FROM db_name
where chk <= 2