让我们说,我有一张这样的表:
表1
id | val
_____________
1 | a
2 | b
3 | b
4 | a
5 | b
6 | a
7 | c
我希望所有行都按val
分组,但前提是该组的大小为3.所以预期的结果是:
[1, a], [4, a], [6, a]
[2, b], [3, b], [5, b]
[7, c]
应该被忽略,因为它的组大小小于3。
注意,带有having
的解决方案将为每个组返回一行,我希望全部看到它们。
答案 0 :(得分:1)
使用子查询来标识其组具有三个或更多成员的id
值,然后将其连接到原始表以限制您在结果集中所需的记录。
SELECT t1.*
FROM table1 t1
INNER JOIN
(
SELECT val
FROM table1
GROUP BY val
HAVING COUNT(*) >= 3
) t2
ON t1.val = t2.val
<强>输出:强>
在这里演示:
答案 1 :(得分:0)
GROUP_CONCAT
的 HAVING
应该向yu提供所请求的结果:
select Group_concat(id), value from table group by value having Count(*)>=3
答案 2 :(得分:0)
有一个子查询返回至少发生3次的所有val:
select id, val
from tablename
where val in (select val
from tablename
group by val
having count(*) >= 3)
答案 3 :(得分:0)
您可以使用以下查询:
$("#cs_name").keyup(function () {
$(".cs_line").each(function () {
if (!$(this).data('name').toLowerCase().includes($("#cs_name").val().toLowerCase())) {
$(this).hide("fast");
}
else {
$(this).show("fast");
}
});
});
答案 4 :(得分:-1)
试试吧
select sel.id, sel.val
from
(Select COUNT(*) over (partition by val order by val) rowcount, a.*
from table1 a) sel
where sel.rowcount = 3