gpt4 book ai didi

mysql - 如何按组筛选结果组

转载 作者:行者123 更新时间:2023-11-29 06:36:05 29 4
gpt4 key购买 nike

我想发出这种类型的 sql 请求(这行不通):

SELECT a, ... FROM tb WHERE ... GROUP BY a HAVING INTERSECTION(b, ('foo', 'bar')) is empty

我不知道如何做“INTERSECTION(b, ('foo', 'bar')) is empty' 部分。我不想匹配与固定集(此处为('foo','bar'))相交的“b”字段集为空的任何行。到目前为止我找到的唯一解决方案是:

SELECT a, ... FROM tb WHERE ... and a not in (select a from tb where b in ('foo', 'bar')) GROUP BY a

但是这个请求很慢(表有+2M行)。有没有更好的方法来做同样的事情?我想我可以使用 HAVING 来过滤结果,但我不知道该怎么做。

编辑:添加示例:

例如,如果我有:

a    b
1 'foo'
1 'test'
2 'test'
3 'bar'

只应返回行 a=2,因为其中一个 a=1 包含 'foo'

最佳答案

试试这个。

SELECT a, ..., sum(if(b in ("foo", "bar"), 1, 0)) as fooBarCount FROM tb WHERE ... GROUP BY a HAVING fooBarCount < 1;

这是 SQLfiddle

关于mysql - 如何按组筛选结果组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24679124/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com